#!/bin/bash
fZipOptionsA()
{
 trap 'echo -en "\ec"; stty sane; exit' SIGINT
 aa=0
 A(){ for b in $(seq 0 30);do E${b};done; }
 B()
{
  local c
  IFS= read -s -n1 c 2>/dev/null >&2
  if [[ $c = $(echo -en "\e") ]]; then
    read -s -n1 c 2>/dev/null >&2
    if [[ $c = \[ ]]; then
      read -s -n1 c 2>/dev/null >&2
      case $c in
        A) echo d ;;
        B) echo e ;;
        C) echo f ;;
        D) echo g ;;
      esac
    fi
  elif [[ "$c" == "$(echo -en \\x0A)" ]]; then
    echo enter
  fi
}
 C()
{
 if [[ $i == d ]];then ((aa--));fi
 if [[ $i == e ]];then ((aa++));fi
 if [[ $aa -lt 0  ]];then aa=30;fi
 if [[ $aa -gt 30 ]];then aa=0;fi;
}

 D()
{
 j1=$((aa+1)); k1=$((aa-1))
 if [[ $k1 -lt 0   ]];then k1=30;fi
 if [[ $j1 -gt 30 ]];then j1=0;fi
 if [[ $aa -lt $aa ]];then echo -en "\e[0m";E$k1;else echo -en "\e[0m";E$j1;fi
 if [[ $j1 -eq 0   ]] || [ $k1 -eq 30 ];then
 echo -en "\e[0m" ; E$k1; E$j1;fi;echo -en "\e[0m";E$k1;E$j1;
}
 TXa()
{
 for (( a=2; a<=35; a++ ))
  do
   echo -e "\e[${a};1H\e[34m\xE2\x94\x82                                                                                \xE2\x94\x82\e[0m"
  done
 echo -en "\e[1;1H\e[34m┌────────────────────────────────────────────────────────────────────────────────┐\e[0m";
 echo -en "\e[2;2H\e[36m Options\e[0m                                                      \e[2m Параметры, Опции\e[0m";
 echo -en "\e[3;1H\e[34m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
 echo -en "\e[34;1H\e[34m├─ \xE2\x86\x91 Up ───── \xE2\x86\x93 Down ──── \xe2\x86\xb2 Select Enter ────────────────────────────────────────┤\e[0m";
 echo -en "\e[36;1H\e[34m└────────────────────────────────────────────────────────────────────────────────┘\e[0m";
}
  E0(){ echo -en "\e[4;2H Системы, использующие EBCDIC Преобразование файла в формат ASCII \e[32m -a --ascii \e[0m";}
  E1(){ echo -en "\e[5;2H Настроить самораспаковывающийся исполняемый архив           \e[32m -A --adjust-sfx \e[0m";}
  E2(){ echo -en "\e[6;2H Oчистите биты архива обрабатываемых файлов              \e[32m -AC --archive-clear \e[0m";}
  E3(){ echo -en "\e[7;2H [WIN32] Включать только файлы с установленным битом архива\e[32m -AS --archive-set \e[0m";}
  E4(){ echo -en "\e[8;2H [VM/CMS и MVS] принудительно считывают файл в двоичном виде     \e[32m -B --binary \e[0m";}
  E5(){ echo -en "\e[9;2H [TANDEM] задайте параметры форматирования Edit/Enscribe с n             \e[32m -Bn \e[0m";}
  E6(){ echo -en "\e[10;2H Используйте указанный путь временного zip-архива   \e[32m -b path --temp-path path \e[0m";}
  E7(){ echo -en "\e[11;2H Добавьте однострочные комментарии для каждого файла     \e[32m -c --entry-comments \e[0m";}
  E8(){ echo -en "\e[12;2H [VMS] Сохранить все дела на VMS                          \e[32m -C --preserve-case \e[0m";}
  E9(){ echo -en "\e[13;2H [VMS] Сохранить случай ODS2 на VMS                    \e[32m -C2 --preserve-case-2 \e[0m";}
 E10(){ echo -en "\e[14;2H Сохранить случай ODS5 на VMS                          \e[32m -C5 --preserve-case-5 \e[0m";}
 E11(){ echo -en "\e[15;2H Удалить (delete) записи из zip-архива                           \e[32m -d --delete \e[0m";}
 E12(){ echo -en "\e[16;2H Отображение текущих счетчиков байтов                    \e[32m -db --display-bytes \e[0m";}
 E13(){ echo -en "\e[17;2H Отображение текущего количества архивированных записей \e[32m -dc --display-counts \e[0m";}
 E14(){ echo -en "\e[18;2H Отображать точки, пока каждая запись заархивирована      \e[32m -dd --display-dots \e[0m";}
 E15(){ echo -en "\e[19;2H Включать в архив только data-fork файлов                     \e[32m -df --datafork \e[0m";}
 E16(){ echo -en "\e[20;2H Отображать точки прогресса для архива              \e[32m -dg --display-globaldots \e[0m";}
 E17(){ echo -en "\e[21;2H Установите количество обрабатываемого файла        \e[32m -ds size --dot-size size \e[0m";}
 E18(){ echo -en "\e[22;2H Отображение несжатого размера каждой записи             \e[32m -du --display-usize \e[0m";}
 E19(){ echo -en "\e[23;2H Отображение номера тома (диска)                        \e[32m -dv --display-volume \e[0m";}
 E20(){ echo -en "\e[24;2H Не создавайте записи в zip-архиве для каталогов         \e[32m -D --no-dir-entries \e[0m";}
 E21(){ echo -en "\e[25;2H Создайте архив, содержащий новые и измененные файлы\e[32m -DF --difference-archive \e[0m";}
 E22(){ echo -en "\e[26;2H Зашифруйте содержимое zip-архива                               \e[32m -e --encrypt \e[0m";}
 E23(){ echo -en "\e[27;2H Используйте расширенный атрибут .LONGNAME                    \e[32m -E --longnames \e[0m";}
 E24(){ echo -en "\e[28;2H Заменить (освежить) существующую запись в zip-архиве           \e[32m -f --freshen \e[0m";}
 E25(){ echo -en "\e[29;2H Исправьте zip-архив                                   \e[32m -F --fix -FF --fixfix \e[0m";}
 E26(){ echo -en "\e[30;2H Обычно zip пропускает чтение всех обнаруженных FIFO              \e[32m -FI --fifo \e[0m";}
 E27(){ echo -en "\e[31;2H Синхронизируйте содержимое архива с файлами в ОС             \e[32m -FS --filesync \e[0m";}
 E28(){ echo -en "\e[32;2H Расширить (дополнить) указанный zip-архив вместо создания нового  \e[32m -g --grow \e[0m";}
 E29(){ echo -en "\e[33;2H Отображение справочной информации zip                          \e[32m -h -? --help \e[0m";}
 E30(){ echo -en "\e[35;2H                                                                        \e[34m Exit \e[0m";}
 INI(){ echo -en "\ec" ;stty sane;TXa;A; };INI
 while [[ "$l1" != " " ]]; do case $aa in
  0)D;echo -en "\e[1;37m"; (E0);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [Системы, использующие EBCDIC] Преобразование файла в формат ASCII
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  1)D;echo -en "\e[1;37m"; (E1);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Настроить самораспаковывающийся исполняемый архив.
 Самораспаковывающийся исполняемый архив создается путем добавления заглушки SFX
 к существующему архиву. Параметр -A указывает zip настроить смещения записей,
 хранящиеся в архиве, чтобы учесть эти данные \"preamble\"
 Примечание: самораспаковывающиеся архивы для Amiga — это особый случай.
 В настоящее время только порт zip для Amiga может настраивать или обновлять их,
 не повреждая их. -J можно использовать для удаления заглушки SFX,
 если необходимо выполнить другие обновления.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  2)D;echo -en "\e[1;37m"; (E2);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [WIN32] После того, как архив создан (и проверен, если используется -T,
 что рекомендуется), очистите биты архива обрабатываемых файлов.
 ВНИМАНИЕ: Как только биты очищены, они очищаются. Вы можете использовать
 параметр -sf show files для сохранения списка обработанных файлов на случай,
 если операцию архивирования придется повторить. Также рассмотрите возможность
 использования параметра -MM must match. Не забудьте проверить -DF как,
 возможно, лучший способ сделать инкрементное резервное копирование.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  3)D;echo -en "\e[1;37m"; (E3);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [WIN32] Включать только файлы с установленным битом архива.
 Каталоги не сохраняются при использовании -AS, хотя по умолчанию пути записей,
 включая каталоги, сохраняются как обычно и могут использоваться большинством
 распаковщиков для воссоздания каталогов. Архивный бит устанавливается операционной
 системой при изменении файла, и при использовании с параметром -AC параметр -AS
 может обеспечить возможность инкрементного резервного копирования. Однако другие
 приложения могут изменить бит архива, и это может быть ненадежным индикатором
 того, какие файлы были изменены с момента последней операции архивирования.
 Альтернативные способы создания инкрементных резервных копий включают
 использование -t для использования дат файлов, хотя это не позволит поймать старые
 файлы, скопированные в архивируемые каталоги и -DF для создания разностного архива
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  4)D;echo -en "\e[1;37m"; (E4);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [VM/CMS и MVS] принудительно считывают файл в двоичном виде
 (по умолчанию это текст).
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  5)D;echo -en "\e[1;37m"; (E5);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [TANDEM] задайте параметры форматирования Edit/Enscribe с n, определенным как
\e[32m bit 0:\e[0m не добавлять разделитель (Edit/Enscribe)
\e[32m bit 1:\e[0m использовать LF вместо CR/LF в качестве разделителя (Edit/Enscribe)
\e[32m bit 2:\e[0m запись заполнения пробела до максимальной длины записи (Enscribe)
\e[32m bit 3:\e[0m Обрезать конечный пробел (Enscribe)
\e[32m bit 8:\e[0m Force 30K (Expand) большое чтение для неструктурированных файлов
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  6)D;echo -en "\e[1;37m"; (E6);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Используйте указанный путь для временного zip-архива. Например:
\e[32m zip -b /tmp stuff *\e[0m
 поместит временный zip-архив в каталог /tmp, скопировав stuff.zip в текущий
 каталог, когда закончите. Этот параметр полезен при обновлении существующего
 архива, когда в файловой системе, содержащей этот старый архив, недостаточно места
 для одновременного хранения старого и нового архивов. В некоторых случаях это
 также может быть полезно при потоковой передаче, чтобы избежать необходимости в
 дескрипторах данных. Обратите внимание, что использование этого параметра может
 потребовать от zip дополнительного времени для копирования файла архива
 в целевую файловую систему.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  7)D;echo -en "\e[1;37m"; (E7);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Добавьте однострочные комментарии для каждого файла.
 Операции с файлами (добавление, обновление) выполняются в первую очередь, а затем
 пользователю предлагается ввести однострочный комментарий для каждого файла.
 Введите комментарий, а затем нажмите Enter
 или просто return, чтобы не комментировать.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  8)D;echo -en "\e[1;37m"; (E8);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [VMS] Сохранить все дела на VMS. Отрицание этой опции (-C-) в нижнем регистре.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  9)D;echo -en "\e[1;37m"; (E9);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [VMS] Сохранить случай ODS2 на VMS.
 Отрицание этой опции (-C2-) в нижнем регистре.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 10)D;echo -en "\e[1;37m";(E10);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [VMS] Сохранить случай ODS5 на VMS.
 Отрицание этой опции (-C5-) в нижнем регистре.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 11)D;echo -en "\e[1;37m";(E11);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Удалить (delete) записи из zip-архива. Например:
\e[32m zip -d foo foo/tom/junk foo/harry/\\* \\*.o\\e[0m
 удалит запись foo/tom/junk, все файлы, начинающиеся с foo/harry/, и все файлы,
 заканчивающиеся на .o (в любом пути). Обратите внимание, что расширение пути к
 оболочке было запрещено с помощью обратной косой черты, поэтому zip может видеть
 звездочки, что позволяет zip сопоставлять содержимое zip-архива, а не содержимое
 текущего каталога. (Обратная косая черта не используется на платформах на основе
 MSDOS.) Также можно использовать кавычки, чтобы избежать звездочек, как в
\e[32m zip -d foo foo/tom/junk \"foo/harry/*\" \"*.o\"\e[0m
 Отсутствие экранирования звездочек в системе, где оболочка расширяет
 подстановочные знаки, может привести к тому, что звездочки будут преобразованы в
 список файлов в текущем каталоге, и этот список будет использоваться для удаления
 записей из архива. В MSDOS параметр -d чувствителен к регистру, если он
 соответствует именам в zip-архиве. Для этого требуется, чтобы имена файлов
 вводились в верхнем регистре, если они были заархивированы с помощью PKZIP в
 системе MSDOS. (Мы рассматривали возможность сделать это значение нечувствительным
 к регистру в системах, где пути были нечувствительны к регистру, но возможно, что
 архив получен из системы, где регистр имеет значение, и архив может включать как
 Bar, так и bar как отдельные файлы в архиве.)
 Но см. новое опция -ic игнорировать регистр в архиве.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 12)D;echo -en "\e[1;37m";(E12);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Отображение текущих счетчиков байтов,
 показывающих заархивированные и оставшиеся байты.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 13)D;echo -en "\e[1;37m";(E13);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Отображение текущего количества заархивированных записей и записей,
 которые нужно удалить.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 14)D;echo -en "\e[1;37m";(E14);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Отображать точки, пока каждая запись заархивирована (кроме портов, у которых есть
 собственный индикатор выполнения). См. -ds ниже для установки размера точки.
 По умолчанию точка ставится через каждые 10 МБ обрабатываемого входного файла.
 Опция -v также отображает точки, ранее с гораздо большей скоростью, чем эта, но
 теперь -v также по умолчанию равна 10 МБ, и эта скорость также контролируется -ds
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 15)D;echo -en "\e[1;37m";(E15);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [MacOS] Включать в архив только data-fork файлов, заархивированных в zip.
 Хорошо подходит для экспорта файлов в иностранные операционные системы.
 Вилки ресурсов будут игнорироваться вообще.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 16)D;echo -en "\e[1;37m";(E16);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Отображать точки прогресса для архива, а не для каждого файла. Команда:
 \e[32m zip -qdgds 10m\e[0m
 отключит большую часть вывода, кроме точек через каждые 10 МБ.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 17)D;echo -en "\e[1;37m";(E17);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Установите количество обрабатываемого входного файла для каждой отображаемой
 точки. См. -dd, чтобы включить отображение точек. Установка этого параметра
 подразумевает -dd.
 Размер указывается в формате nm, где n — число, а m — множитель.
 В настоящее время m может быть k (КБ), m (МБ), g (ГБ) или t (ТБ), поэтому,
 если n равно 100, а m равно k, размер будет 100k, что составляет 100 КБ.
 По умолчанию 10 МБ.
 Параметр -v также отображает точки и теперь по умолчанию также равен 10 МБ.
 Эта скорость также контролируется этой опцией. Размер 0 отключает точки.
 Этот параметр не управляет точками в сообщении «Сканирование файлов»,
 когда zip-сканирует входные файлы. Размер точки для этого фиксирован
 и составляет 2 секунды или фиксированное количество записей,
 в зависимости от того, что больше.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 18)D;echo -en "\e[1;37m";(E18);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Отображение несжатого размера каждой записи.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 19)D;echo -en "\e[1;37m";(E19);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Отображение номера тома (диска), с которого считывается каждая запись,
 если читается существующий архив и на который записывается.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 20)D;echo -en "\e[1;37m";(E20);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Не создавайте записи в zip-архиве для каталогов. Записи каталога создаются
 по умолчанию, чтобы их атрибуты можно было сохранить в zip-архиве.
 Переменную среды ZIPOPT можно использовать для изменения параметров по умолчанию.
 Например под Unix с sh:
\e[32m ZIPOPT=\"-D\"; export ZIPOPT\e[0m
 (Переменная ZIPOPT может использоваться для любой опции, включая -i и -x с
 использованием нового формата опции, описанного ниже, и может включать несколько
 опций.) Параметр -D является сокращением для -x \"*/\", но последний ранее
 не может быть установлен по умолчанию в переменной среды ZIPOPT, поскольку
 содержимое ZIPOPT вставляется в начале командной строки, а список файлов должен
 заканчиваться в конце строки.
 Эта версия zip допускает опции -x и -i в ZIPOPT, если форма:
\e[32m -x file file ... @\e[0m
 используется, где @ (аргумент, который является просто @) завершает список.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 21)D;echo -en "\e[1;37m";(E21);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Создайте архив, содержащий все новые и измененные файлы с момента создания
 исходного архива. Чтобы это работало, список входных файлов и текущий каталог
 должны быть такими же, как и во время исходной операции zip.
 Например, если существующий архив был создан с помощью
\e[32m zip -r foofull\e[0m
 из каталога bar, затем команда:\e[32m zip -r foofull\e[0m -DF --out foonew
 также из каталога bar создает архив foonew только с файлами, не входящими в
 foofull, и файлами, в которых размер или время файла не соответствуют файлам
 в foofull. Обратите внимание, что переменная среды часового пояса TZ должна быть
 установлена в соответствии с местным часовым поясом, чтобы эта опция работала
 правильно. Изменение часового пояса с момента создания исходного архива может
 привести к несоответствию времени и включению всех файлов. Возможным подходом к
 резервному копированию каталога может быть создание обычного архива содержимого
 каталога в качестве полной резервной копии, а затем использование
 этого параметра для создания добавочных резервных копий.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 22)D;echo -en "\e[1;37m";(E22);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Создание защищенного паролем ZIP-файла
 Если у вас есть конфиденциальная информация, которую необходимо сохранить в архиве,
 вы можете зашифровать ее, используя параметр -e:
\e[32m zip -e  archivename.zip directory_name\e[0m
 Вам будет предложено ввести и подтвердить пароль архива:
\e[2m Enter password:
 Verify password:\e[0m
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 23)D;echo -en "\e[1;37m";(E23);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [OS/2] Используйте расширенный атрибут .LONGNAME
 (если он найден) в качестве имени файла.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 24)D;echo -en "\e[1;37m";(E24);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Заменить (освежить) существующую запись в zip-архиве только в том случае,
 если она была изменена позднее, чем версия, уже находящаяся в zip-архиве;
 в отличие от опции обновления (-u) это не добавит файлы,
 которых еще нет в zip-архиве. Например:\e[32m zip -f foo\e[0m
 Эту команду следует запускать из того же каталога, из которого была запущена
 исходная команда zip, поскольку пути, хранящиеся в zip-архивах, всегда
 относительные. Обратите внимание, что переменная среды часового пояса TZ должна
 быть установлена в соответствии с местным часовым поясом, чтобы параметры -f, -u и
 -o работали правильно. Причины этого довольно тонкие, но они связаны с различиями
 между временем файла в формате Unix (всегда по Гринвичу) и в большинстве других
 операционных систем (всегда по местному времени) и необходимостью их сравнения.
 Типичным значением TZ является «MET-1MEST» (среднеевропейское время с
 автоматической настройкой на «летнее время» или переход на летнее время).
 Формат — TTThhDDD, где TTT — это часовой пояс, такой как MET, hh — это разница
 между GMT и местным временем, например -1 выше, а DDD — это часовой пояс, когда
 действует летнее время. Оставьте DDD, если нет перехода на летнее время.
 Для восточного часового пояса США EST5EDT.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 25)D;echo -en "\e[1;37m";(E25);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Исправьте zip-архив.
 Параметр -F можно использовать, если некоторые части архива отсутствуют,
 но при этом требуется достаточно неповрежденный центральный каталог.
 Входной архив сканируется как обычно, но zip игнорирует некоторые проблемы.
 Результирующий архив должен быть действительным, но любые несогласованные
 записи будут исключены.
 При дублировании, как в -FF, архив сканируется с самого начала,
 а zip сканирует специальные подписи, чтобы определить ограничения между
 элементами архива.
 Единственный -F более надежен, если архив не слишком сильно поврежден,
 поэтому сначала попробуйте этот вариант.
 Если архив слишком поврежден или его конец обрезан, необходимо использовать -FF.
 Это изменение по сравнению с zip 2.32, где опция -F может читать усеченный архив.
 Параметр -F теперь более надежно исправляет архивы с незначительными
 повреждениями, а параметр -FF необходим для исправления архивов,
 где раньше могло быть достаточно -F.
 Ни один из вариантов не восстанавливает архивы, которые были неправильно переданы
 в режиме ascii вместо двоичного. После восстановления опция распаковки -t может
 показать, что некоторые файлы имеют неверный CRC.
 Такие файлы невозможно восстановить; вы можете удалить их из архива,
 используя опцию -d zip.
 Обратите внимание, что -FF может иметь проблемы с исправлением архивов,
 содержащих встроенный zip-архив, который был сохранен (без сжатия) в архиве, и в
 зависимости от повреждения, он может найти записи во встроенном архиве, а не в
 самом архиве. Сначала попробуйте -F, так как у него нет этой проблемы.
 Изменился формат команд исправления.
 Например, чтобы исправить поврежденный архив foo.zip:
\e[32m zip -F foo --out foofix\e[0m
 пытается нормально читать записи, копируя хорошие записи в новый архив foofix.zip
 Если это не работает, например, когда архив усекается, или если некоторые записи,
 которые, как вы знаете, в архиве пропущены, попробуйте:
\e[32m zip -FF foo --out foofixfix\e[0m
 и сравните получившийся архив с архивом, созданным с помощью -F.
 Параметр -FF может создать несовместимый архив.
 В зависимости от того, что повреждено, вы можете использовать опцию -F,
 чтобы исправить этот архив.
 Разделенный архив с отсутствующими разделенными файлами можно исправить
 с помощью -F, если у вас есть последний разделенный архив (файл .zip).
 Если этот файл отсутствует, вы должны использовать -FF для исправления архива,
 который предложит вам расщепления, которые у вас есть.
 В настоящее время параметры исправления не могут восстанавливать записи,
 которые имеют неверную контрольную сумму или повреждены иным образом.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 26)D;echo -en "\e[1;37m";(E26);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [Unix] Обычно zip пропускает чтение всех обнаруженных FIFO (именованных каналов),
 так как zip может зависнуть, если FIFO не загружается.
 Эта опция указывает zip читать содержимое любого найденного FIFO.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 27)D;echo -en "\e[1;37m";(E27);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Синхронизируйте содержимое архива с файлами в ОС.
 Обычно при обновлении архива добавляются новые файлы и обновляются измененные
 файлы, но файлы, которые больше не существуют в ОС, не удаляются из архива.
 Эта опция включает новый режим, который проверяет записи в архиве на соответствие
 файловой системе. Если время файла и размер файла записи совпадают с файлом ОС,
 запись копируется из старого архива, а не считывается из файловой системы и
 сжимается. Если файл ОС был изменен, запись читается и сжимается как обычно.
 Если запись в архиве не соответствует файлу в ОС, запись удаляется.
 Включение этой опции должно создавать архивы, такие же, как и новые архивы,
 но поскольку существующие записи копируются, а не сжимаются, обновление
 существующего архива с помощью -FS может быть намного быстрее, чем создание
 нового архива. Также рассмотрите возможность использования -u для обновления
 архива. Чтобы эта опция работала, архив должен обновляться из того же каталога,
 в котором он был создан, чтобы относительные пути совпадали. Если из старого
 архива копируется мало файлов, может быть быстрее создать новый архив.
 Обратите внимание, что переменная среды часового пояса TZ должна быть
 установлена в соответствии с местным часовым поясом, чтобы эта опция работала
 правильно. Изменение часового пояса с момента создания исходного архива может
 привести к несоответствию времени и повторному сжатию всех файлов. Эта опция
 удаляет файлы из архива. Если вам нужно сохранить исходный архив, сначала
 сделайте копию архива или используйте параметр --out для вывода обновленного
 архива в новый файл. Несмотря на то, что это может быть медленнее, создание
 нового архива с новым именем архива безопаснее, позволяет избежать
 несоответствия между путями архива и ОС и предпочтительнее.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 28)D;echo -en "\e[1;37m";(E28);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Расширить (дополнить) указанный zip-архив вместо создания нового.
 Если эта операция не удалась, zip попытается восстановить архив в исходное
 состояние. Если восстановление не удастся, архив может быть поврежден.
 Этот параметр игнорируется, если архива нет или необходимо обновить
 или удалить хотя бы один член архива.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 29)D;echo -en "\e[1;37m";(E29);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Отображение справочной информации zip:
\e[32m zip -h\e[0m
\e[32m zip -?\e[0m
\e[32m zip --help\e[0m
 (это также появляется, если zip запускается без аргументов).
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 30)D;echo -en "\e[1;37m";(E30);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fZip;fi;;
esac;C;done
}
#==============================================================================================
#==============================================================================================
fZipOptionsB()
{
 trap 'echo -en "\ec"; stty sane; exit' SIGINT
 aa=0
 A(){ for b in $(seq 0 30);do E${b};done; }
 B()
{
  local c
  IFS= read -s -n1 c 2>/dev/null >&2
  if [[ $c = $(echo -en "\e") ]]; then
    read -s -n1 c 2>/dev/null >&2
    if [[ $c = \[ ]]; then
      read -s -n1 c 2>/dev/null >&2
      case $c in
        A) echo d ;;
        B) echo e ;;
        C) echo f ;;
        D) echo g ;;
      esac
    fi
  elif [[ "$c" == "$(echo -en \\x0A)" ]]; then
    echo enter
  fi
}
 C()
{
 if [[ $i == d ]];then ((aa--));fi
 if [[ $i == e ]];then ((aa++));fi
 if [[ $aa -lt 0  ]];then aa=30;fi
 if [[ $aa -gt 30 ]];then aa=0;fi;
}

 D()
{
 j1=$((aa+1)); k1=$((aa-1))
 if [[ $k1 -lt 0   ]];then k1=30;fi
 if [[ $j1 -gt 30 ]];then j1=0;fi
 if [[ $aa -lt $aa ]];then echo -en "\e[0m";E$k1;else echo -en "\e[0m";E$j1;fi
 if [[ $j1 -eq 0   ]] || [ $k1 -eq 30 ];then
 echo -en "\e[0m" ; E$k1; E$j1;fi;echo -en "\e[0m";E$k1;E$j1;
}
 TXa()
{
 for (( a=2; a<=36; a++ ))
  do
   echo -e "\e[${a};1H\e[34m\xE2\x94\x82                                                                                \xE2\x94\x82\e[0m"
  done
 echo -en "\e[1;1H\e[34m┌────────────────────────────────────────────────────────────────────────────────┐\e[0m";
 echo -en "\e[2;2H\e[36m Options\e[0m                                                      \e[2m Параметры, Опции\e[0m";
 echo -en "\e[3;1H\e[34m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
 echo -en "\e[34;1H\e[34m├─ \xE2\x86\x91 Up ───── \xE2\x86\x93 Down ──── \xe2\x86\xb2 Select Enter ────────────────────────────────────────┤\e[0m";
 echo -en "\e[36;1H\e[34m└────────────────────────────────────────────────────────────────────────────────┘\e[0m";
}
  E0(){ echo -en "\e[4;2H Расширенная справка, включающая дополнительные сведения     \e[32m -h2 --more-help \e[0m";}
  E1(){ echo -en "\e[5;2H Включить только указанные файлы                    \e[32m -i files --include files \e[0m";}
  E2(){ echo -en "\e[6;2H Не сканировать файлы изображений                              \e[32m -I --no-image \e[0m";}
  E3(){ echo -en "\e[7;2H Игнорировать регистр при сопоставлении записей архива     \e[32m -ic --ignore-case \e[0m";}
  E4(){ echo -en "\e[8;2H Сохраняйте только имя сохраненного файла                    \e[32m -j --junk-paths \e[0m";}
  E5(){ echo -en "\e[9;2H Запись Fullpath (+ Volname) Будет сохранен полный путь  \e[32m -jj --absolute-path \e[0m";}
  E6(){ echo -en "\e[10;2H Удалите все предшествующие данные                             \e[32m -J --junk-sfx \e[0m";}
  E7(){ echo -en "\e[11;2H Попытаться преобразовать имена и пути в соответствии с MSDOS \e[32m -k --DOS-names \e[0m";}
  E8(){ echo -en "\e[12;2H Преобразуйте символ конца строки Unix LF согласно с MSDOS CR LF\e[32m -l --to-crlf \e[0m";}
  E9(){ echo -en "\e[13;2H Добавить к существующему файлу журнала                     \e[32m -la --log-append \e[0m";}
 E10(){ echo -en "\e[14;2H Откройте файл по указанному пути \e[32m -lf logfilepath --logfile-path logfilepath \e[0m";}
 E11(){ echo -en "\e[15;2H Включите в журнал информационные сообщения                   \e[32m -li --log-info \e[0m";}
 E12(){ echo -en "\e[16;2H Переведите конечный CR LF MSDOS в Unix LF                   \e[32m -ll --from-crlf \e[0m";}
 E13(){ echo -en "\e[17;2H Показать ZIP-лицензию                                          \e[32m -L --license \e[0m";}
 E14(){ echo -en "\e[18;2H Переместите указанные файлы в zip-архив                           \e[32m -m --move \e[0m";}
 E15(){ echo -en "\e[19;2H Все входные шаблоны должны соответствовать одному файлу    \e[32m -MM --must-match \e[0m";}
 E16(){ echo -en "\e[20;2H Не пытайтесь сжимать файлы с суффиксами     \e[32m -n suffixes --suffixes suffixes \e[0m";}
 E17(){ echo -en "\e[21;2H Не выполнять внутреннюю обработку подстановочных знаков       \e[32m -nw --no-wild \e[0m";}
 E18(){ echo -en "\e[22;2H Сохраняйте примечания к файлам Amiga или MacOS                   \e[32m -N --notes \e[0m";}
 E19(){ echo -en "\e[23;2H Установите время «последнего изменения» zip-архива         \e[32m -o --latest-time \e[0m";}
 E20(){ echo -en "\e[24;2H Выведите архив в выходной файл     \e[32m -O output-file --output-file output-file \e[0m";}
 E21(){ echo -en "\e[25;2H Включите относительные пути к файлам как часть имен файлов       \e[32m -p --paths \e[0m";}
 E22(){ echo -en "\e[26;2H Используйте пароль для шифрования zip-файла \e[32m -P password --password password \e[0m";}
 E23(){ echo -en "\e[27;2H Бесшумный режим                                                  \e[32m -q --quiet \e[0m";}
 E24(){ echo -en "\e[28;2H Хранит информацию о файле в заголовке файла с n              \e[32m -Qn --Q-flag n \e[0m";}
 E25(){ echo -en "\e[29;2H Рекурсивно перемещайтесь по структуре каталогов          \e[32m -r --recurse-paths \e[0m";}
 E26(){ echo -en "\e[30;2H Рекурсивно перемещаться по структуре каталогов        \e[32m -R --recurse-patterns \e[0m";}
 E27(){ echo -en "\e[31;2H До zip 3.0 сопоставление списков регулярных выражений           \e[32m -RE --regex \e[0m";}
 E28(){ echo -en "\e[32;2H Включите создание разделенного архива   \e[32m -s splitsize --split-size splitsize \e[0m";}
 E29(){ echo -en "\e[33;2H При разделении звоните в колокольчик                       \e[32m -sb --split-bell \e[0m";}
 E30(){ echo -en "\e[35;2H                                                                        \e[34m Exit \e[0m";}
 INI(){ echo -en "\ec" ;stty sane;TXa;A; };INI
 while [[ "$l1" != " " ]]; do case $aa in
  0)D;echo -en "\e[1;37m"; (E0);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Отображение расширенной справки, включающей дополнительные сведения о формате
 командной строки, сопоставлении шаблонов и других малопонятных параметрах:
\e[32m zip -h2\e[0m
\e[32m zip --more-help\e[0m
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  1)D;echo -en "\e[1;37m"; (E1);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Включить только указанные файлы, например:
\e[32m zip -r foo . -i \\*.c\e[0m
 который будет включать только файлы, оканчивающиеся на .c
 в текущем каталоге и его подкаталогах.
 (Примечание для пользователей PKZIP: эквивалентная команда:
\e[32m pkzip -rP foo *.c\e[0m
 PKZIP не допускает рекурсии в каталогах, отличных от текущего.)
 Обратная косая черта позволяет избежать замены имени файла оболочки, поэтому
 сопоставление имен выполняется zip на всех уровнях каталога.
 [Это для Unix и других систем, где \\ экранирует следующий символ.
 Для других систем, где оболочка не обрабатывает *, не используйте \\,
 а приведенное выше \e[32m zip -r foo . -i *.c\e[0m
 Примеры приведены для Unix, если не указано иное.] Таким образом, чтобы
 включить dir, каталог непосредственно под текущим каталогом, используйте
\e[32m zip -r foo . -i dir/\\*\e[0m или\e[32m zip -r foo . -i \"dir/*\" \e[0m
 для сопоставления таких путей, как dir/a и dir/b/file.c [на портах без
 расширения подстановочных знаков в оболочке, таких как MSDOS и Windows
\e[32m zip -r foo . -i dir/*\e[0m используется.]
 Обратите внимание, что в настоящее время конечный / необходим для каталогов
 (как в\e[32m zip -r foo . -i dir/\e[0m включить каталог dir).
 Форма длинного варианта первого примера:\e[32m zip -r foo . --include \\*.c\e[0m
 и делает то же самое, что и форма короткого варианта.
 Хотя синтаксис команды раньше требовал -i в конце командной строки,
 эта версия фактически разрешает -i (или --include) где угодно.
 Список файлов заканчивается следующим аргументом, начинающимся с -,
 концом командной строки или знаком конца списка @
 (аргументом, который является просто @).
 Таким образом, вышеизложенное можно представить как
\e[32m zip -i \\*.c @ -r foo .\e[0m например.
 Между опцией и первым файлом списка должен быть пробел.
 Только для одного файла вы можете использовать форму с одним значением
\e[32m zip -i\\*.c -r foo .\e[0m
(без пробела между параметром и значением) или
\e[32m zip --include=\\*.c -r foo .\e[0m
 в качестве дополнительных примеров.
 Формы с одним значением не рекомендуются, потому что они могут сбивать с толку,
 и в частности, формат -ifile может вызвать проблемы, если первая буква файла
 объединяется с i, образуя двухбуквенный параметр, начинающийся с i.
 Используйте -sc, чтобы увидеть, как будет анализироваться ваша командная строка.
 Также возможно:\e[32m  zip -r foo  . -i@include.lst\e[0m
 который будет включать только те файлы в текущем каталоге и его подкаталогах,
 которые соответствуют шаблонам в файле include.lst.
 Файлы для -i и -x являются шаблонами, соответствующими внутренним путям архива.
 См. -R для получения дополнительной информации о шаблонах.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  2)D;echo -en "\e[1;37m"; (E2);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [Acorn RISC OS] Не сканировать файлы изображений. При использовании zip не будет
 рассматривать файлы изображений (например, разделы DOS или архивы Spark при
 загрузке SparkFS) как каталоги, а будет хранить их как отдельные файлы.
 Например, если у вас загружена SparkFS, сжатие архива Spark приведет к созданию
 zip-файла, содержащего каталог (и его содержимое), а использование параметра «I»
 приведет к созданию zip-файла, содержащего архив Spark. Очевидно, что этот второй
 случай также будет получен (без опции «I»), если SparkFS не загружен.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  3)D;echo -en "\e[1;37m"; (E3);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [VMS, WIN32] Игнорировать регистр при сопоставлении записей архива.
 Этот параметр доступен только в системах, где регистр файлов игнорируется.
 В системах с нечувствительными к регистру файловыми системами регистр обычно
 игнорируется при сопоставлении файлов в файловой системе, но не игнорируется для
 -f (освежение), -d (удаление), -U (копирование) и подобных режимов при
 сопоставлении с архивом. записей (в настоящее время -f игнорирует регистр в VMS),
 потому что архивные записи могут быть из систем, где регистр имеет значение,
 а имена, за исключением регистра, могут существовать в архиве.
 Параметр -ic делает все совпадения нечувствительными к регистру.
 Это может привести к тому, что несколько записей архива будут соответствовать
 шаблону командной строки.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  4)D;echo -en "\e[1;37m"; (E4);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Сохраняйте только имя сохраненного файла
 (сбросьте путь) и не сохраняйте имена каталогов.
 По умолчанию zip сохраняет полный путь (относительно текущего каталога).
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  5)D;echo -en "\e[1;37m"; (E5);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [MacOS] запись Fullpath (+ Volname). Будет сохранен полный путь, включая том.
 По умолчанию будет сохранен относительный путь.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  6)D;echo -en "\e[1;37m"; (E6);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Удалите все предшествующие данные (например, SFX-заглушку) из архива.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  7)D;echo -en "\e[1;37m"; (E7);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Попытаться преобразовать имена и пути в соответствии с MSDOS,
 сохранить только атрибут MSDOS (только атрибут записи пользователя из Unix)
 и пометить запись как сделанную в MSDOS (даже если это не так)
 для совместимости с PKUNZIP под MSDOS,
 которая не может обрабатывать определенные имена, например, с двумя точками.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  8)D;echo -en "\e[1;37m"; (E8);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Преобразуйте символ конца строки Unix LF в соглашение MSDOS CR LF.
 Этот параметр не следует использовать для двоичных файлов. Эту опцию можно
 использовать в Unix, если zip-файл предназначен для PKUNZIP под MSDOS.
 Если входные файлы уже содержат CR LF, эта опция добавляет дополнительный CR.
 Это делается для того, чтобы unzip -a в Unix вернула точную копию исходного файла,
 чтобы отменить действие zip -l. См. -ll, как обрабатываются двоичные файлы.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  9)D;echo -en "\e[1;37m"; (E9);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Добавить к существующему файлу журнала. По умолчанию перезаписывается.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 10)D;echo -en "\e[1;37m";(E10);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Откройте файл журнала по указанному пути.
 По умолчанию любой существующий файл в этом месте перезаписывается,
 но параметр -la приведет к открытию существующего файла
 и добавлению новой информации журнала к любой существующей информации.
 В журнал записываются только предупреждения и ошибки,
 если не указан параметр -li,
 тогда все информационные сообщения также записываются в журнал.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 11)D;echo -en "\e[1;37m";(E11);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Включите в журнал информационные сообщения, например, об именах архивируемых
 файлов. По умолчанию включаются только командная строка, любые предупреждения
 и ошибки, а также окончательный статус.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 12)D;echo -en "\e[1;37m";(E12);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Переведите конечный CR LF MSDOS в Unix LF.
 Этот параметр не следует использовать для двоичных файлов. Эту опцию можно
 использовать в MSDOS, если zip-файл предназначен для распаковки в Unix.
 Если файл преобразован, а позже определяется как двоичный, выдается предупреждение
 и файл вероятно поврежден. В этом выпуске, если -ll обнаруживает двоичный файл в
 первом буфере, считанном из файла, zip теперь выдает предупреждение и пропускает
 преобразование конца строки в файле. Эта проверка, по-видимому, перехватывает все
 проверенные двоичные файлы, но исходная проверка остается, и если позже будет
 определено, что преобразованный файл является двоичным, предупреждение все равно
 выдается. В настоящее время используется новый алгоритм для обнаружения двоичных
 файлов, который должен позволять преобразование конца строки текстовых файлов
 в UTF-8 и аналогичные кодировки.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 13)D;echo -en "\e[1;37m";(E13);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Показать ZIP-лицензию:
\e[32m zip -L\e[0m или\e[32m zip --license\e[0m
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 14)D;echo -en "\e[1;37m";(E14);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Переместите указанные файлы в zip-архив; на самом деле это удаляет целевые
 каталоги/файлы после создания указанного zip-архива.
 Если каталог становится пустым после удаления файлов, каталог также удаляется.
 Никакие удаления не выполняются до тех пор, пока zip не создаст архив без ошибок.
 Это полезно для экономии места на диске, но потенциально опасно, поэтому
 рекомендуется использовать его в сочетании с -T
 для проверки архива перед удалением всех входных файлов.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 15)D;echo -en "\e[1;37m";(E15);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Все входные шаблоны должны соответствовать хотя бы одному файлу,
 и все найденные входные файлы должны быть доступны для чтения.
 Обычно, когда входной шаблон не соответствует файлу, выдается предупреждение
 «имя не соответствует», а когда входной файл был найден, но позже отсутствует
 или не читается, выдается предупреждение об отсутствии или нечитаемости.
 В любом случае zip продолжает создавать архив, при этом отсутствующие
 или нечитаемые новые файлы пропускаются, а файлы, уже находящиеся в архиве,
 остаются без изменений.
 После создания архива, если какие-либо файлы не читаются, zip возвращает
 код ошибки OPEN (18 в большинстве систем)
 вместо обычного успешного завершения (0 в большинстве систем).
 Если установлено -MM, zip завершает работу, как только входной шаблон не
 соответствует (всякий раз, когда выдается предупреждение «имя не соответствует»)
 или когда входной файл не читается. В любом случае zip завершает работу с ошибкой
 OPEN, и архив не создается. Этот параметр полезен, когда известный список файлов
 должен быть заархивирован, поэтому любые отсутствующие или нечитаемые файлы
 приведут к ошибке. Это менее полезно при использовании с подстановочными знаками,
 но zip все равно завершится с ошибкой, если какой-либо входной шаблон не
 соответствует хотя бы одному файлу и если какие-либо совпавшие файлы не читаются.
 Если вы все равно хотите создать архив и вам нужно знать только,
 были ли пропущены файлы, не используйте -MM и просто проверьте код возврата.
 Также может быть полезен параметр -lf.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 16)D;echo -en "\e[1;37m";(E16);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Не пытайтесь сжимать файлы с указанными суффиксами.
 Такие файлы просто сохраняются (сжатие 0%) в выходном zip-файле,
 так что zip не тратит время на их сжатие.
 Суффиксы разделяются двоеточием или точкой с запятой. Например:
\e[32m zip -rn .Z:.zip:.tiff:.gif:.snd foo foo\e[0m
 скопирует все из foo в foo.zip, но сохранит любые файлы, которые заканчиваются на
\e[32m .Z, .zip, .tiff, .gif или .snd\e[0m
 не пытаясь их сжать (файлы изображений и звуков часто имеют свои собственные
 специализированные методы сжатия).
 По умолчанию zip не сжимает файлы с расширениями из списка
\e[32m .Z:.zip:.zoo:.arc:.lzh:.arj\e[0m
 Такие файлы сохраняются непосредственно в выходном архиве.
 Переменную среды ZIPOPT можно использовать для изменения параметров по умолчанию.
 Например под Unix с csh:
\e[32m setenv ZIPOPT \"-n .gif:.zip\"\e[0m
 Чтобы попытаться сжать все файлы, используйте:
 \e[32m zip -n : foo\e[0m Параметр максимального сжатия -9
 также пытается сжать все файлы независимо от расширения.
 В системах ОС Acorn RISC суффиксы на самом деле являются типами файлов
 (формат из 3 шестнадцатеричных цифр).
 По умолчанию zip не сжимает файлы с типами файлов из списка
 DDC:D96:68E (т. е. архивы, файлы CFS и файлы PackDir).
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 17)D;echo -en "\e[1;37m";(E17);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Не выполнять внутреннюю обработку подстановочных знаков
 (обработка подстановочных знаков выполняется оболочкой,
 если только аргументы не экранированы). Полезно,
 если считывается список путей и не требуется замена подстановочных знаков.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 18)D;echo -en "\e[1;37m";(E18);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [Amiga, MacOS] Сохраняйте примечания к файлам Amiga или MacOS как комментарии
 к zip-файлам. Их можно восстановить, используя опцию -N для распаковки.
 Если также используется -c, комментарии запрашиваются только для тех файлов,
 которые не имеют примечаний к файлам.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 19)D;echo -en "\e[1;37m";(E19);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Установите время «последнего изменения» zip-архива на самое последнее
 (самое старое) время «последнего изменения», найденное среди записей в zip-архиве.
 При желании его можно использовать без каких-либо других операций. Например:
\e[32m zip -o foo\e[0m изменит время последнего изменения foo.zip
 на самое последнее время записей в foo.zip.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 20)D;echo -en "\e[1;37m";(E20);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Обработайте архивные изменения как обычно, но вместо обновления существующего
 архива выведите новый архив в выходной файл. Полезно для обновления архива без
 изменения существующего архива, и входной архив должен быть файлом, отличным от
 выходного архива. Эту опцию можно использовать для создания обновленных
 разделенных архивов. Его также можно использовать с -U для копирования записей
 из существующего архива в новый архив.
 См. раздел ПРИМЕРЫ ниже. Другое использование — преобразование zip-файлов из
 одного размера разделения в другой. Например, чтобы преобразовать архив
 с разделами CD по 700 МБ в архив с разделами DVD по 2 ГБ, можно использовать:
\e[32m zip -s 2g cd-split.zip --out dvd-split.zip\e[0m
 который использует режим копирования. См. -U ниже. Также:
\e[32m zip -s 0 split.zip --out unsplit.zip\e[0m
 преобразует разделенный архив в однофайловый архив.
 Режим копирования преобразует записи потока (с использованием дескрипторов
 данных и которые должны быть совместимы с большинством распаковок)
 в обычные записи (которые должны быть совместимы со всеми распаковками),
 за исключением случаев, когда использовалось стандартное шифрование.
 Для архивов с зашифрованными записями zipcloak расшифрует записи
 и преобразует их в обычные записи.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 21)D;echo -en "\e[1;37m";(E21);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Включите относительные пути к файлам как часть имен файлов, хранящихся в архиве.
 Это значение по умолчанию.
 Параметр -j отбрасывает пути и просто сохраняет имена файлов.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 22)D;echo -en "\e[1;37m";(E22);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Используйте пароль для шифрования записей zip-файла (если есть). ЭТО НЕБЕЗОПАСНО!
 Многие многопользовательские операционные системы позволяют любому пользователю
 видеть текущую командную строку любого другого пользователя; даже в автономных
 системах всегда существует угроза подглядывания через плечо.
 Хранение открытого текста пароля как части командной строки в автоматизированном
 сценарии еще хуже. По возможности используйте интерактивную подсказку без эха
 для ввода паролей. (А там, где безопасность действительно важна, используйте
 надежное шифрование, такое как Pretty Good Privacy, вместо относительно слабого
 стандартного шифрования, предоставляемого утилитами zipfile.)
 Зашифруйте содержимое zip-архива, используя пароль, который вводится
 на терминале в ответ на приглашение (это не будет отображено; если стандартная
 ошибка не является tty, zip завершится с ошибкой).
 Запрос пароля повторяется, чтобы уберечь пользователя от ошибок ввода.

 Создать zip-архив зашифрованный из файлa:
\e[32m zip -P password -r file.zip file\e[0m

 Создать zip-архив зашифрованный из нескольких файлов:
\e[32m zip --password MY_SECRET secure.zip doc.pdf doc2.pdf doc3.pdf\e[0m
 или
\e[32m zip --password 000 secure.zip *\e[0m

 Создать zip-архив зашифрованный из папки
\e[32m zip -P мойпароль -r mysecretdir.zip mysecretdir\e[0m
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 23)D;echo -en "\e[1;37m";(E23);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Бесшумный режим; исключить информационные сообщения и подсказки о комментариях.
 (Полезно, например, в сценариях оболочки и фоновых задачах).
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 24)D;echo -en "\e[1;37m";(E24);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [QDOS] хранит информацию о файле в заголовке файла с n, определенным как
\e[32m bit 0:\e[0m не добавлять заголовки для любого файла
\e[32m bit 1:\e[0m добавить заголовки для всех файлов
\e[32m bit 2:\e[0m не ждать интерактивного нажатия клавиши при выходе
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 25)D;echo -en "\e[1;37m";(E25);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Рекурсивно перемещайтесь по структуре каталогов, например:
\e[32m zip -r foo.zip foo\e[0m
 или более кратко
\e[32m zip -r foo foo\e[0m
 В этом случае все файлы и каталоги в foo сохраняются в zip-архиве с именем foo.zip
 включая файлы с именами, начинающимися с \".\", поскольку рекурсия не использует
 механизм подстановки имен файлов оболочки.
 Если вы хотите включить только определенное подмножество файлов в каталоге foo
 и его подкаталогах, используйте параметр -i, чтобы указать шаблон файлов, которые
 необходимо включить. Вы не должны использовать -r с именем \".*\", так как это
 соответствует \"..\", что попытается заархивировать родительский каталог
 (вероятно, не то, что предполагалось).
 Допускается несколько исходных каталогов, как в
\e[32m zip -r foo foo1 foo2\e[0m
 который сначала заархивирует foo1, а затем foo2, спускаясь по каждому каталогу.
 Обратите внимание, что хотя подстановочные знаки для -r обычно разрешаются при
 рекурсивном переходе вниз по каталогам в файловой системе, любые подстановочные
 знаки -R, -x и -i применяются к внутренним путям к архивам после сканирования
 каталогов. Чтобы подстановочные знаки применялись к файлам в подкаталогах при
 рекурсии в Unix и подобных системах, где оболочка выполняет подстановку
 подстановочных знаков, либо экранируйте все подстановочные знаки, либо поместите
 все аргументы с подстановочными знаками в кавычки.
 Это позволяет zip видеть подстановочные знаки
 и сопоставлять файлы в подкаталогах, используя их при рекурсии.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 26)D;echo -en "\e[1;37m";(E26);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Рекурсивно перемещаться по структуре каталогов, начиная с текущего каталога;
 например:\e[32m  zip -R foo \"*.c\"\e[0m
 В этом случае все файлы, соответствующие *.c в дереве, начиная с текущего каталога
 сохраняются в zip-архиве с именем foo.zip. Обратите внимание, что *.c будет
 соответствовать файлу.c, a/file.c и a/b/.c. В качестве отдельных аргументов может
 быть указано более одного шаблона.
 Примечание для пользователей PKZIP: эквивалентная команда\e[32m pkzip -rP foo *.c\e[0m
 Шаблоны представляют собой относительные пути к файлам, как они появляются в
 архиве или будут после архивирования, и могут содержать необязательные
 подстановочные знаки. Например, если текущий каталог называется foo,
 в нем находятся каталоги foo1 и foo2, а в foo1 находится файл bar.c,
\e[32m zip -R foo/*\e[0m
 будут zip up foo, foo/foo1, foo/foo1/bar.c, и foo/foo2
\e[32m zip -R */bar.c\e[0m
 будут zip up foo/foo1/bar.c
 См. примечание для -r об экранировании подстановочных знаков.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 27)D;echo -en "\e[1;37m";(E27);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [WIN32] До zip 3.0 сопоставление списков регулярных выражений было включено
 по умолчанию на платформах Windows. Из-за путаницы, возникающей из-за
 необходимости экранировать \"[\" и \"]\" в именах, теперь это отключено по
 умолчанию для Windows, поэтому \"[\" и \"]\" — это обычные символы в именах.
 Эта опция снова включает сопоставление []
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 28)D;echo -en "\e[1;37m";(E28);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Создание сплит Zip файла
 Представьте, что вы хотите хранить Zip-архив в службе размещения файлов, у
 которой ограничение размера загрузки файла составляет 1 ГБ, а ваш Zip-архив
 составляет 5 ГБ.
 Вы можете создать новый разделенный Zip-файл, используя -s опцию с указанным
 размером. Множитель может быть k (килобайт), m (мегабайт), g (гигабайт) или t
 (терабайт).
\e[32m zip -s 1g -r archivename.zip directory_name\e[0m
 Приведенная выше команда будет продолжать создавать новые архивы в наборе после
 достижения указанного предела размера.

 Включите создание разделенного архива и установите размер разделения.
 Разделенный архив — это архив, который можно разделить на несколько файлов.
 При создании архива, если размер архива достигает указанного размера разделения,
 это разделение закрывается и открывается следующее разделение. Как правило,
 все разбивается, но последним будет размер разделения, а последним будет то,
 что осталось. Если весь архив меньше размера разделения, создается однофайловый
 архив. Разделенные архивы хранятся в пронумерованных файлах.
 Например, если выходной архив называется архивом и требуется три разделения,
 результирующий архив будет состоять из трех файлов:
 archive.z01, archive.z02, and archive.zip
 Не изменяйте нумерацию этих файлов, иначе архив будет нечитаем, поскольку они
 используются для определения порядка чтения разделов. Размер разделения
 — это число, за которым может следовать множитель. В настоящее время число
 должно быть целым числом. В настоящее время множитель может быть одним из
 k (килобайты), m (мегабайты), g (гигабайты) или t (терабайты).
 Поскольку 64 КБ — это минимальный размер разделения, числа без множителей
 по умолчанию равны мегабайтам. Например, чтобы создать раздельный архив
 с именем foo с содержимым каталога bar с разделами по 670 МБ, который
 может быть полезен для записи на компакт-диски, выполните команду:
\e[32m zip -s 670m -r foo bar\e[0m может быть использован.
 В настоящее время старые разбиения разделенного архива не исключаются из нового
 архива, но их можно специально исключить. Если возможно, держите входные
 и выходные архивы вне пути архивирования при создании разделенных архивов.
 Использование -s без -sp, как указано выше, создает все разбиения, в которые
 записывается foo, в данном случае текущий каталог. Этот режим разделения
 обновляет разделения по мере создания архива, требуя, чтобы все разделения
 оставались доступными для записи, но создает разделенные архивы, доступные для
 чтения любой распаковкой, поддерживающей разделенные архивы.
 См. -sp ниже, чтобы включить режим разделенной паузы, который позволяет
 записывать фрагменты непосредственно на съемный носитель.
 Параметр -sv можно использовать для включения подробного разделения
 и предоставления сведений о том, как выполняется разделение.
 Параметр -sb можно использовать для звонка, когда zip делает паузу
 для следующего пункта назначения разделения. Разделенные архивы не могут быть
 обновлены, но см. параметр -O (--out), чтобы узнать, как можно обновить
 разделенный архив при его копировании в новый архив. Разделенный архив также
 можно преобразовать в однофайловый архив,
 используя размер разделения 0 или отрицая параметр -s:
\e[32m zip -s 0 split.zip --out single.zip\e[0m
 Также см. -U (--copy) для получения дополнительной информации
 об использовании режима копирования.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 29)D;echo -en "\e[1;37m";(E29);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 При разделении и использовании режима разделенной паузы звоните в колокольчик,
 когда почтовый индекс делает паузу для каждого места назначения разделения.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 30)D;echo -en "\e[1;37m";(E30);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fZip;fi;;
esac;C;done
}
#==============================================================================================
#==============================================================================================
#==============================================================================================
fZipOptionsC()
{
 trap 'echo -en "\ec"; stty sane; exit' SIGINT
 aa=0
 A(){ for b in $(seq 0 30);do E${b};done; }
 B()
{
  local c
  IFS= read -s -n1 c 2>/dev/null >&2
  if [[ $c = $(echo -en "\e") ]]; then
    read -s -n1 c 2>/dev/null >&2
    if [[ $c = \[ ]]; then
      read -s -n1 c 2>/dev/null >&2
      case $c in
        A) echo d ;;
        B) echo e ;;
        C) echo f ;;
        D) echo g ;;
      esac
    fi
  elif [[ "$c" == "$(echo -en \\x0A)" ]]; then
    echo enter
  fi
}
 C()
{
 if [[ $i == d ]];then ((aa--));fi
 if [[ $i == e ]];then ((aa++));fi
 if [[ $aa -lt 0  ]];then aa=30;fi
 if [[ $aa -gt 30 ]];then aa=0;fi;
}

 D()
{
 j1=$((aa+1)); k1=$((aa-1))
 if [[ $k1 -lt 0   ]];then k1=30;fi
 if [[ $j1 -gt 30 ]];then j1=0;fi
 if [[ $aa -lt $aa ]];then echo -en "\e[0m";E$k1;else echo -en "\e[0m";E$j1;fi
 if [[ $j1 -eq 0   ]] || [ $k1 -eq 30 ];then
 echo -en "\e[0m" ; E$k1; E$j1;fi;echo -en "\e[0m";E$k1;E$j1;
}
 TXa()
{
 for (( a=2; a<=35; a++ ))
  do
   echo -e "\e[${a};1H\e[34m\xE2\x94\x82                                                                                \xE2\x94\x82\e[0m"
  done
 echo -en "\e[1;1H\e[34m┌────────────────────────────────────────────────────────────────────────────────┐\e[0m";
 echo -en "\e[2;2H\e[36m Options\e[0m                                                      \e[2m Параметры, Опции\e[0m";
 echo -en "\e[3;1H\e[34m├────────────────────────────────────────────────────────────────────────────────┤\e[0m";
 echo -en "\e[34;1H\e[34m├─ \xE2\x86\x91 Up ───── \xE2\x86\x93 Down ──── \xe2\x86\xb2 Select Enter ────────────────────────────────────────┤\e[0m";
 echo -en "\e[36;1H\e[34m└────────────────────────────────────────────────────────────────────────────────┘\e[0m";
}
  E0(){ echo -en "\e[4;2H Покажите терминал, запускающую zip как обработанную      \e[32m -sc --show-command \e[0m";}
  E1(){ echo -en "\e[5;2H Покажите файлы, над которыми будут работать, затем выйдите \e[32m -sf --show-files \e[0m";}
  E2(){ echo -en "\e[6;2H Показать все доступные параметры, поддерживаемые zip     \e[32m -so --show-options \e[0m";}
  E3(){ echo -en "\e[7;2H С помощью -s, включите режим разделения паузы             \e[32m -sp --split-pause \e[0m";}
  E4(){ echo -en "\e[8;2H Как -sf, но также показывать версию пути в Unicode       \e[32m -su --show-unicode \e[0m";}
  E5(){ echo -en "\e[9;2H То же, что -sf, но показывать версию в Юникоде      \e[32m -sU --show-just-unicode \e[0m";}
  E6(){ echo -en "\e[10;2H Включите различные подробные сообщения                  \e[32m -sv --split-verbose \e[0m";}
  E7(){ echo -en "\e[11;2H Включить системные и скрытые файлы                       \e[32m -S --system-hidden \e[0m";}
  E8(){ echo -en "\e[12;2H Не работать с файлами, измененными до даты \e[32m -t mmddyyyy --from-date mmddyyyy \e[0m";}
  E9(){ echo -en "\e[13;2H Не работать с файлами, указанной даты   \e[32m -tt mmddyyyy --before-date mmddyyyy \e[0m";}
 E10(){ echo -en "\e[14;2H Проверьте целостность нового zip-файла                            \e[32m -T --test \e[0m";}
 E11(){ echo -en "\e[15;2H Используйте команду cmd вместо unzip -tqq       \e[32m -TT cmd --unzip-command cmd \e[0m";}
 E12(){ echo -en "\e[16;2H Заменять (обновлять) существующую запись в zip-архиве           \e[32m -u --update \e[0m";}
 E13(){ echo -en "\e[17;2H Копировать записи из одного архива в другой               \e[32m -U --copy-entries \e[0m";}
 E14(){ echo -en "\e[18;2H Определите, что zip должен делать с именами файлов Unicode\e[32m -UN v --unicode v \e[0m";}
 E15(){ echo -en "\e[19;2H Подробный режим распечатать информацию о диагностической версии\e[32m -v --verbose \e[0m";}
 E16(){ echo -en "\e[20;2H Сохранение атрибутов файла VMS                            \e[32m -V --VMS-portable \e[0m";}
 E17(){ echo -en "\e[21;2H Сохранение атрибутов файла VMS и выделенных блоков в файл\e[32m -VV --VMS-specific \e[0m";}
 E18(){ echo -en "\e[22;2H Добавление номера версии файлов к имени                   \e[32m -w --VMS-versions \e[0m";}
 E19(){ echo -en "\e[23;2H Добавляйте к имени номер версии файлов               \e[32m -ww --VMS-dot-versions \e[0m";}
 E20(){ echo -en "\e[24;2H Подстановочные знаки совпадают только уровня каталога  \e[32m -ws --wild-stop-dirs \e[0m";}
 E21(){ echo -en "\e[25;2H Явно исключить указанные файлы                     \e[32m -x files --exclude files \e[0m";}
 E22(){ echo -en "\e[26;2H Не сохраняйте дополнительные атрибуты файла                   \e[32m -X --no-extra \e[0m";}
 E23(){ echo -en "\e[27;2H Для UNIX и VMS (версия 8.3 и более поздние)                   \e[32m -y --symlinks \e[0m";}
 E24(){ echo -en "\e[28;2H Запрашивать многострочный комментарий для zip-архива   \e[32m -z --archive-comment \e[0m";}
 E25(){ echo -en "\e[29;2H Установите метод сжатия по умолчанию          \e[32m -Z cm --compression-method cm \e[0m";}
 E26(){ echo -en "\e[30;2H Регулируйте скорость сжатия     \e[32m -# (-0, -1, -2, -3, -4, -5, -6, -7, -8, -9) \e[0m";}
 E27(){ echo -en "\e[31;2H Используйте привилегии (если они предоставлены)         \e[32m -! --use-privileges \e[0m";}
 E28(){ echo -en "\e[32;2H Возьмите список входных файлов из стандартного ввода       \e[32m -@ --names-stdin \e[0m";}
 E29(){ echo -en "\e[33;2H Включите метку тома для диска                             \e[32m -$ --volume-label \e[0m";}
 E30(){ echo -en "\e[35;2H                                                                        \e[34m Exit \e[0m";}
 INI(){ echo -en "\ec" ;stty sane;TXa;A; };INI
 while [[ "$l1" != " " ]]; do case $aa in
  0)D;echo -en "\e[1;37m"; (E0);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Покажите командную строку, запускающую zip как обработанную, и выйдите.
 Новый синтаксический анализатор команд переставляет аргументы, помещая все
 параметры и любые связанные с ними значения перед любыми аргументами,
 не являющимися параметрами. Это позволяет параметру появляться в любом месте
 командной строки, если любые значения, связанные с параметром, соответствуют ему.
 Эта опция отображает командную строку так, как ее видит zip, включая любые
 аргументы из среды, например из переменной ZIPOPT. Там, где это разрешено,
 параметры, расположенные позже в командной строке, могут иметь приоритет
 перед параметрами, указанными ранее в командной строке.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  1)D;echo -en "\e[1;37m"; (E1);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Покажите файлы, над которыми будут работать, затем выйдите.
 Например, при создании нового архива будут перечислены файлы, которые будут
 добавлены. Если опция отключена, -sf-, вывод только в открытый файл журнала.
 Отображение на экране не рекомендуется для больших списков.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  2)D;echo -en "\e[1;37m"; (E2);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Показать все доступные параметры, поддерживаемые zip, скомпилированные в текущей
 системе. Поскольку эта команда считывает таблицу параметров, она должна включать
 все параметры. Каждая строка включает краткую опцию (если определена),
 длинную опцию (если определена), формат любого значения, которое идет с опцией,
 если опция может быть инвертирована, и небольшое описание. Формат значения может
 быть без значения, обязательным значением, необязательным значением,
 односимвольным значением, числовым значением или списком значений.
 Вывод этой опции не предназначен для того, чтобы показать, как использовать
 какую-либо опцию, а только для того, чтобы показать, какие опции доступны.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  3)D;echo -en "\e[1;37m"; (E3);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Если разделение включено с помощью -s, включите режим разделения паузы.
 Это создает разделенные архивы, как это делает -s, но используется потоковая
 запись, поэтому каждое разделение может быть закрыто, как только оно будет
 записано, и zip будет делать паузу между каждым разделением, чтобы разрешить
 изменение места назначения разделения или носителя. Хотя этот режим разделения
 позволяет записывать фрагменты непосредственно на съемный носитель, он использует
 формат потокового архива, который может быть нечитаем некоторыми распаковщиками.
 Прежде чем полагаться на сплиты, созданные с помощью -sp, протестируйте
 сплит-архив с помощью распаковки, которую вы будете использовать.
 Чтобы преобразовать разделенный потоком архив (созданный с помощью -sp)
 в стандартный архив, используйте параметр --out.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  4)D;echo -en "\e[1;37m"; (E4);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Как -sf, но также показывать версию пути в Unicode, если она существует.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  5)D;echo -en "\e[1;37m"; (E5);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 То же, что и -sf, но показывать только версию пути в Юникоде,
 если она существует, в противном случае показывать стандартную версию пути.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  6)D;echo -en "\e[1;37m"; (E6);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Включите различные подробные сообщения во время разделения,
 показывающие, как выполняется разделение.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  7)D;echo -en "\e[1;37m"; (E7);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [MSDOS, OS/2, WIN32 и ATARI] Включить системные и скрытые файлы.
 [MacOS] Включает невидимые файлы Finder, которые в противном случае игнорируются.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  8)D;echo -en "\e[1;37m"; (E8);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Не работать с файлами, измененными до указанной даты,
 где мм — месяц (00–12), дд — день месяца (01–31), а гггг — год.
 Формат даты ISO 8601 yyyy-mm-dd также принимается. Например:
\e[32m zip -rt 12071991 infamy foo\e[0m
\e[32m zip -rt 1991-12-07 infamy foo\e[0m
 добавит все файлы в foo и его подкаталогах, которые в последний раз изменялись
 7 декабря 1991 года или позднее, в zip-архив infamy.zip.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
  9)D;echo -en "\e[1;37m"; (E9);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Не работать с файлами, измененными после или в указанную дату,
 где мм — месяц (00–12), дд — день месяца (01–31), а гггг — год.
 Формат даты ISO 8601 yyyy-mm-dd также принимается. Например:
\e[32m zip -rtt 11301995 infamy foo\e[0m
\e[32m zip -rtt 1995-11-30 infamy foo\e[0m
 добавит все файлы в foo и его подкаталогах,
 которые последний раз изменялись до 30 ноября 1995 года, в zip-архив infamy.zip
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 10)D;echo -en "\e[1;37m";(E10);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Проверьте целостность нового zip-файла. Если проверка не пройдена,
 старый zip-файл остается неизменным и (с опцией -m) входные файлы не удаляются.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 11)D;echo -en "\e[1;37m";(E11);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Используйте команду cmd вместо «unzip -tqq», чтобы проверить архив, когда
 используется опция -T. В Unix, чтобы использовать копию unzip в текущем каталоге
 вместо стандартной системной распаковки, можно использовать:
\e[32m \e[0m
 В cmd {} заменяется именем временного архива, в противном случае имя архива
 добавляется в конец команды. Код возврата проверяется на успех (0 в Unix).
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 12)D;echo -en "\e[1;37m";(E12);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Заменять (обновлять) существующую запись в zip-архиве только в том случае,
 если она была изменена позднее, чем версия, уже находящаяся в zip-архиве.
 Например:\e[32m zip -u stuff *\e[0m
 добавит любые новые файлы в текущий каталог и обновит все файлы, которые были
 изменены с момента последнего создания/изменения zip-архива stuff.zip
 (обратите внимание, что zip не будет пытаться упаковать stuff.zip в себя,
 когда вы это сделаете). Обратите внимание, что параметр -u без аргументов
 входного файла действует так же, как параметр -f (freshen).
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 13)D;echo -en "\e[1;37m";(E13);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Копировать записи из одного архива в другой.
 Требуется параметр --out для указания выходного файла, отличного от входного
 архива. Режим копирования противоположен -d delete. Когда удаление используется
 с --out, выбранные записи удаляются из архива, а все остальные записи копируются
 в новый архив, а режим копирования выбирает файлы для включения в новый архив.
 В отличие от -u update шаблоны ввода в командной строке сопоставляются только
 с записями архива, а не с файлами файловой системы. Например:
\e[32m zip inarchive \"*.c\" --copy --out outarchive\e[0m
 копирует записи с именами, оканчивающимися на .c, из inarchive в outarchive.
 В некоторых системах необходимо экранировать подстановочный знак, чтобы оболочка
 не подставляла имена файлов из файловой системы, которые могут не иметь отношения
 к записям в архиве. Если в командной строке не отображаются входные файлы
 и используется параметр --out, предполагается режим копирования:
\e[32m zip inarchive --out outarchive\e[0m
 Это полезно, например, для изменения размера разделения.
 Шифрование и дешифрование записей пока не поддерживается в режиме копирования.
 Используйте для этого zipcloak.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 14)D;echo -en "\e[1;37m";(E14);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Определите, что zip должен делать с именами файлов Unicode. zip 3.0,
 в дополнение к стандартному пути к файлу, теперь включает перевод пути UTF-8, если
 путь входа не полностью 7-битный ASCII. Если в записи отсутствует путь Unicode,
 zip возвращается к стандартному пути к файлу. Проблема с использованием
 стандартного пути заключается в том, что этот путь находится в локальном наборе
 символов почтового индекса, создавшего запись, который может содержать символы,
 недопустимые в наборе символов, используемом при распаковке.
 Когда zip читает архив, если запись также имеет путь Unicode,
 zip теперь по умолчанию использует путь Unicode для воссоздания стандартного пути
 с использованием текущего локального набора символов.
 Этот параметр можно использовать для определения того, что zip должен делать
 с этим путем, если существует несоответствие между сохраненным стандартным путем
 и сохраненным путем UTF-8 (что может произойти, если стандартный путь был
 обновлен). Во всех случаях, если есть несоответствие, предполагается,
 что стандартный путь более актуален, и zip использует его. Значения для v:
\e[32m q\e[0m - выйти, если пути не совпадают
\e[32m w\e[0m - предупредить, продолжить по стандартному пути
\e[32m i\e[0m - игнорировать, продолжить по стандартному пути
\e[32m n\e[0m - нет Unicode, не использовать пути Unicode
 По умолчанию предупреждение и продолжение.
 Символы, недопустимые в текущем наборе символов, экранируются как
 #Uxxxx и #Lxxxxxx,
 где x — это символ ASCII для шестнадцатеричной цифры.
 Первый используется, если 16-битного номера символа достаточно для представления
 символа Unicode, а второй, если символу требуется более 16 бит для представления
 его кода символа Unicode. Установка -UN в
\e[32m e - escape\e[0m
 как в
\e[32m zip archive -sU -UN=e\e[0m
 заставляет zip экранировать все символы, которые не могут быть напечатаны
 7-битным ASCII. Обычно zip сохраняет UTF-8 непосредственно в поле стандартного
 пути в системах, где UTF-8 является текущим набором символов,
 и в противном случае сохраняет UTF-8 в новых дополнительных полях. Опция
\e[32m u - UTF-8\e[0m
 как в
\e[32m zip archive dir -r -UN=UTF8\e[0m
 заставляет zip хранить кодировку UTF-8 как нативную в архиве. Обратите внимание,
 что сохранение UTF-8 напрямую используется по умолчанию в системах Unix, которые
 его поддерживают. Этот параметр может быть полезен в системах Windows,
 где экранированный путь слишком велик, чтобы быть допустимым путем,
 а версия пути UTF-8 меньше,
 но собственная UTF-8 не имеет обратной совместимости в системах Windows.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 15)D;echo -en "\e[1;37m";(E15);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Подробный режим или распечатать информацию о диагностической версии.
 Обычно применительно к реальным операциям этот параметр включает отображение
 индикатора выполнения во время сжатия (см. -dd для получения дополнительной
 информации о точках) и запрашивает подробную диагностическую информацию о
 странностях структуры zip-файла. Однако, когда -v является единственным
 аргументом командной строки, вместо этого печатается диагностический экран.
 Теперь это должно работать, даже если стандартный вывод перенаправляется в файл,
 что позволяет легко сохранять информацию для отправки с отчетами об ошибках
 в Info-ZIP. Экран версии содержит заголовок экрана справки с названием программы,
 версией и датой выпуска, некоторыми указателями на домашний и дистрибутивный
 сайты Info-ZIP, а также показывает информацию о целевой среде (тип и версия
 компилятора, версия ОС, дата компиляции и включены дополнительные функции,
 используемые для создания исполняемого файла zip).
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 16)D;echo -en "\e[1;37m";(E16);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [VMS] Сохранение атрибутов файла VMS. (Файлы усекаются в EOF.)
 Когда архив -V распаковывается в системе, отличной от VMS, некоторые типы файлов
 (особенно текстовые файлы Stream_LF и чистые двоичные файлы, такие как fixed-512)
 должны быть извлечены без изменений. Индексированные файлы и типы файлов со
 встроенными размерами записей (особенно типы записей переменной длины),
 вероятно, будут рассматриваться как поврежденные в другом месте.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 17)D;echo -en "\e[1;37m";(E17);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [VMS] Сохранение атрибутов файла VMS и всех выделенных блоков в файле, включая
 любые данные за пределами EOF. Полезно для перемещения файлов неправильного
 формата между системами VMS. Когда архив -VV распаковывается в системе,
 отличной от VMS, почти все файлы будут повреждены.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 18)D;echo -en "\e[1;37m";(E18);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [VMS] Добавление номера версии файлов к имени, включая несколько версий файлов.
 По умолчанию используется только самая последняя версия указанного файла.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 19)D;echo -en "\e[1;37m";(E19);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [VMS] Добавляйте к имени номер версии файлов, включая несколько версий файлов,
 используя формат .nnn
 По умолчанию используется только самая последняя версия указанного файла.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 20)D;echo -en "\e[1;37m";(E20);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Подстановочные знаки совпадают только на уровне каталога.
 Обычно zip обрабатывает пути как строки и учитывая пути
\e[32m /foo/bar/dir/file1.c\e[0m
\e[32m /foo/bar/file2.c\e[0m
 шаблон ввода, такой как
\e[32m /foo/bar/*\e[0m
 обычно соответствуют обоим путям, * соответствующим dir/file1.c и file2.c.
 Обратите внимание, что в первом случае при совпадении была пересечена граница
 каталога (/). С параметром -ws никакие границы каталогов не будут включены в
 сопоставление, что делает подстановочные знаки локальными для определенного
 уровня каталога. Таким образом, при включенном параметре -ws совпадет только
 второй путь. При использовании -ws используйте ** для соответствия между
 границами каталога, как это обычно делает *.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 21)D;echo -en "\e[1;37m";(E21);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Явно исключить указанные файлы, например:
\e[32m zip -r foo foo -x \\*.o\e[0m
 который будет включать содержимое foo в foo.zip, исключая все файлы,
 оканчивающиеся на .o Обратная косая черта позволяет избежать замены имени файла
 оболочки, поэтому сопоставление имен выполняется zip на всех уровнях каталога.
 Также возможно:\e[32m zip -r foo foo -x@exclude.lst\e[0m
 который будет включать содержимое foo в foo.zip, исключая все файлы,
 соответствующие шаблонам в файле exclude.lst.
 Формы длинного опциона из вышеперечисленного:\e[32m zip -r foo foo --exclude \*.o\e[0m
 and\e[32m zip -r foo foo --exclude @exclude.lst\e[0m
 Можно указать несколько шаблонов, например:
\e[32m zip -r foo foo -x \\*.o \\*.c\e[0m
 Если между -x и шаблоном нет пробела, предполагается только одно значение
 (без списка):\e[32m zip -r foo foo -x\\*.o\e[0m
 См. -i для получения дополнительной информации о включении и исключении.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 22)D;echo -en "\e[1;37m";(E22);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Не сохраняйте дополнительные атрибуты файла
 (расширенные атрибуты в OS/2, uid/gid и время файла в Unix).
 Формат zip использует дополнительные поля для включения дополнительной информации
 для каждой записи. Некоторые дополнительные поля относятся к конкретным системам,
 в то время как другие применимы ко всем системам. Обычно, когда zip читает записи
 из существующего архива, он считывает известные ему дополнительные поля, удаляет
 остальные и добавляет дополнительные поля, применимые к этой системе.
 С -X zip удаляет все старые поля и включает только дополнительные поля Unicode
 и Zip64 (в настоящее время эти два дополнительных поля нельзя отключить).
 Отрицая эту опцию, -X- включает все дополнительные поля по умолчанию,
 но также копирует любые нераспознанные дополнительные поля.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 23)D;echo -en "\e[1;37m";(E23);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Для UNIX и VMS (версия 8.3 и более поздние) сохраняйте символические ссылки
 как таковые в zip-архиве вместо того, чтобы сжимать и сохранять файл, на который
 ссылается ссылка. Это позволяет избежать включения нескольких копий файлов в
 архив, поскольку zip рекурсивно повторяет деревья каталогов
 и обращается к файлам напрямую и по ссылкам.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 24)D;echo -en "\e[1;37m";(E24);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Запрашивать многострочный комментарий для всего zip-архива.
 Комментарий заканчивается строкой, содержащей только точку или условие конца файла
 (^D в Unix, ^Z в MSDOS, OS/2 и VMS). Комментарий можно взять из файла:
\e[32m zip -z foo < foowhat\e[0m
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 25)D;echo -en "\e[1;37m";(E25);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Установите метод сжатия по умолчанию.

 Чтобы указать метод сжатия, используйте -Z опцию:
\e[32m zip -r -Z bzip2 archivename.zip directory_name\e[0m

 В настоящее время основными методами, поддерживаемыми zip, являются store
 и deflate. Метод сжатия может быть установлен на:
\e[32m store\e[0m - Установка метода сжатия для сохранения заставляет zip сохранять записи без
 сжатия. Обычно это быстрее, чем сжатие записей, но не приводит к экономии места.
 Это то же самое, что и использование -0 (нулевой уровень сжатия).
\e[32m deflate\e[0m — это метод по умолчанию для zip.
 Если zip определяет, что сохранение лучше, чем дефляция, запись будет сохранена.
\e[32m bzip2\e[0m — если скомпилирована поддержка bzip2, этот метод сжатия также становится
 доступным. Только некоторые современные распаковщики в настоящее время
 поддерживают метод сжатия bzip2, поэтому проверьте распаковку, которую вы будете
 использовать, прежде чем полагаться на архивы, использующие этот метод
 (метод сжатия 12).
 Например, чтобы добавить bar.c в архив foo, используя сжатие bzip2:
\e[32m zip -Z bzip2 foo bar.c\e[0m
 Метод сжатия может быть сокращен:
\e[32m zip -Zb foo bar.c\e[0m
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 26)D;echo -en "\e[1;37m";(E26);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Команда zip позволяет указать уровень сжатия, используя число с префиксом от 0 до 9
 Регулируйте скорость сжатия с помощью указанной цифры #, где:
\e[32m -0\e[0m указывает на отсутствие сжатия (сохранение всех файлов).
    При использовании -0, все файлы будут храниться без сжатия.
\e[32m -1\e[0m указывает на самую высокую скорость сжатия (меньшее сжатие) и
\e[32m -6\e[0m (оптимальное сжатие, игнорирует список суффиксов).
 Уровень сжатия по умолчанию равен -6.
\e[32m -9\e[0m наилучший степень сжатия,
    заставит команду zip использовать оптимальное сжатие для всех файлов.
 Несмотря на то, что все еще ведется работа, предполагается, что этот параметр
 будет контролировать скорость сжатия для всех методов сжатия.
 В настоящее время контролируется только дефляция.

 Например, чтобы использовать уровень сжатия -9, вы должны напечатать что-то вроде:
\e[32m zip -9 -r archivename.zip directory_name\e[0m
 Чем выше уровень сжатия, тем интенсивнее загрузка ЦП
 и процесс займет больше времени.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 27)D;echo -en "\e[1;37m";(E27);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [WIN32] Используйте привилегии (если они предоставлены)
 для получения всех аспектов безопасности WinNT.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 28)D;echo -en "\e[1;37m";(E28);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Возьмите список входных файлов из стандартного ввода.
 Только одно имя файла в строке.
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 29)D;echo -en "\e[1;37m";(E29);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 [MSDOS, OS/2, WIN32] Включите метку тома для диска, содержащего первый сжимаемый
 файл. Если вы хотите включить только метку тома или указать определенный диск,
 используйте имя диска в качестве первого имени файла, например:
\e[32m zip -$ foo a: c:bar\e[0m
";echo -en "\e[1;34m ENTER = main menu ";read;INI;fi;;
 30)D;echo -en "\e[1;37m";(E30);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fZip;fi;;
esac;C;done
}
#==============================================================================================
#==============================================================================================
#==============================================================================================
fZip()
{
 trap 'echo -en "\ec"; stty sane; exit' SIGINT
 aa=0
 A(){ for b in $(seq 0 17);do E${b};done; }
 B()
{
  local c
  IFS= read -s -n1 c 2>/dev/null >&2
  if [[ $c = $(echo -en "\e") ]]; then
    read -s -n1 c 2>/dev/null >&2
    if [[ $c = \[ ]]; then
      read -s -n1 c 2>/dev/null >&2
      case $c in
        A) echo d ;;
        B) echo e ;;
        C) echo f ;;
        D) echo g ;;
      esac
    fi
  elif [[ "$c" == "$(echo -en \\x0A)" ]]; then
    echo enter
  fi
}
 C()
{
 if [[ $i == d ]];then ((aa--));fi
 if [[ $i == e ]];then ((aa++));fi
 if [[ $aa -lt 0  ]];then aa=17;fi
 if [[ $aa -gt 17 ]];then aa=0;fi;
}

 D()
{
 j1=$((aa+1)); k1=$((aa-1))
 if [[ $k1 -lt 0   ]];then k1=17;fi
 if [[ $j1 -gt 17 ]];then j1=0;fi
 if [[ $aa -lt $aa ]];then echo -en "\e[0m";E$k1;else echo -en "\e[0m";E$j1;fi
 if [[ $j1 -eq 0   ]] || [ $k1 -eq 17 ];then
 echo -en "\e[0m" ; E$k1; E$j1;fi;echo -en "\e[0m";E$k1;E$j1;
}
 TXa()
{
 for (( a=2; a<=28; a++ ))
  do
   echo -e "\e[${a};1H\e[47;30m│\e[0m                                                                                \e[47;30m│\e[0m"
  done
 echo -en "\e[1;1H\033[0m\033[47;30m┌────────────────────────────────────────────────────────────────────────────────┐\033[0m";
 echo -en "\e[3;3H\e[1m *** zip ***\e[0m";
 echo -en "\e[4;3H\e[2m package and compress (archive) files\e[0m";
 echo -en "\e[5;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
 echo -en "\e[20;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
 echo -en "\e[21;3H\e[2m Порядок работы\e[0m";
 echo -en "\e[24;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
 echo -en "\e[26;1H\e[47;30m├\e[0m─ \xE2\x86\x91 Up ───── \xE2\x86\x93 Down ──── \xe2\x86\xb2 Select Enter ────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
 echo -en "\e[29;1H\e[0m\e[47;30m└────────────────────────────────────────────────────────────────────────────────┘\e[0m";
}
  E0(){ echo -en "\e[6;3H Установка                                                          \e[32m Install \e[0m";}
  E1(){ echo -en "\e[7;3H Kраткий обзор                                                     \e[32m Synopsis \e[0m";}
  E2(){ echo -en "\e[8;3H Описание                                                       \e[32m Description \e[0m";}
  E3(){ echo -en "\e[9;3H Авторы                                                             \e[32m Authors \e[0m";}
  E4(){ echo -en "\e[10;3H Смотрите также                                                    \e[32m See Also \e[0m";}
  E5(){ echo -en "\e[11;3H Окружающая среда                                               \e[32m Environment \e[0m";}
  E6(){ echo -en "\e[12;3H Диагностика                                                    \e[32m Diagnostics \e[0m";}
  E7(){ echo -en "\e[13;3H Ошибки                                                                \e[32m Bugs \e[0m";}
  E8(){ echo -en "\e[14;3H Благодарности                                             \e[32m Acknowledgements \e[0m";}
  E9(){ echo -en "\e[15;3H Сопоставление с образцом                                  \e[32m Pattern matching \e[0m";}
 E10(){ echo -en "\e[16;3H Применение                                                             \e[32m Use \e[0m";}
 E11(){ echo -en "\e[17;3H Параметры, Опции                                             \e[32m Options A - H \e[0m";}
 E12(){ echo -en "\e[18;3H Параметры, Опции                                             \e[32m Options H - S \e[0m";}
 E13(){ echo -en "\e[19;3H Параметры, Опции                                             \e[32m Options S - Z \e[0m";}
 E14(){ echo -en "\e[22;3H Чтобы создать Zip архив                                                     ";}
 E15(){ echo -en "\e[23;3H Распаковка                                                                  ";}
 E16(){ echo -en "\e[25;3H                                                                        \e[32m Git \e[0m";}
 E17(){ echo -en "\e[27;3H                                                                        Exit ";}
 INI(){ echo -en "\ec" ;stty sane;TXa;A; };INI
 while [[ "$l1" != " " ]]; do case $aa in
  0)D;echo -en "\e[47;30m"; (E0);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 zip Утилита не устанавливается по умолчанию в большинстве дистрибутивов Linux,
 но вы можете легко установить его с помощью менеджера пакетов вашего
 дистрибутива.

 Установите Zip на Ubuntu и Debian:
\e[32m sudo apt install zip unzip\e[0m

 Установите Zip на CentOS и Fedora:
\e[32m sudo yum install zip\e[0m
";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  1)D;echo -en "\e[47;30m"; (E1);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Синтаксис для использования команды zip:
\e[32m zip [option] output_file_name input1 input2\e[0m

 Команда zip имеет следующую синтаксическую форму:
\e[32m zip OPTIONS ARCHIVE_NAME FILES\e[0m

\e[32m zip [-aABcdDeEfFghjklLmoqrRSTuvVwXyz!@$] [--longoption ...] [-b path]
 [-n suffixes] [-t date] [-tt date] [zipfile [file ...]] [-xi list]
\e[0m
\e[32m zipcloak\e[0m см. отдельную справочную страницу
\e[32m zipnote \e[0m см. отдельную справочную страницу
\e[32m zipsplit\e[0m см. отдельную справочную страницу

   zip опции файлы
 unzip опции архив

 Примечание. Обработка командной строки в zip была изменена для поддержки длинных
 параметров и более согласованной обработки всех параметров и аргументов.
 Некоторые старые командные строки, которые зависят от несогласованности команд-
 ной строки, могут больше не работать.
";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  2)D;echo -en "\e[47;30m"; (E2);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 zip — Кроссплатформенная утилита для создания сжатых архивов формата zip
 для Unix, VMS, MSDOS, OS/2, Windows, 9x/NT/XP, Minix, Atari, Macintosh, Amiga
 и Acorn RISC OS.
 Он аналогичен комбинации команд Unix tar и compress и совместим с PKZIP
 (ZIP Фила Каца для систем MSDOS).
 Сопутствующая программа (unzip) распаковывает zip-архивы. Программы zip
 и unzip могут работать с архивами, созданными PKZIP (поддерживая большинство
 функций PKZIP вплоть до PKZIP версии 4.6), а PKZIP и PKUNZIP могут работать с
 архивами, созданными zip (за некоторыми исключениями, в частности с потоковыми
 архивами, но недавними изменениями). в стандарте zip-файла может способствовать
 лучшей совместимости). zip версии 3.0 совместим с PKZIP 2.04, а также поддержи-
 вает расширения Zip64 PKZIP 4.5, которые позволяют архивам и файлам превышать
 предыдущий предел в 2ГБ (4ГБ в некоторых случаях). zip также теперь поддерживает
 сжатие bzip2, если библиотека bzip2 включена при компиляции zip.
 Обратите внимание, что PKUNZIP 1.10 не может извлекать файлы, созданные
 PKZIP2.04 или zip 3.0. Вы должны использовать PKUNZIP 2.04g или разархивировать
 5.0p1 (или более поздние версии), чтобы распаковать их.
 См. раздел ПРИМЕРЫ внизу этой страницы для примеров некоторых типичных
 применений zip.
 Большие архивы и Zip64. zip автоматически использует расширения Zip64, когда в
 архив добавляются файлы размером более 4ГБ, обновляется архив, содержащий записи
 Zip64 (если полученный архив все еще нуждается в Zip64), размер архива превысит
 4ГБ или когда количество записей в архиве превысит около 64К. Zip64 также ис-
 пользуется для архивов, передаваемых из стандартного ввода, поскольку размер
 таких архивов заранее неизвестен, но параметр -fz- можно использовать, чтобы за-
 ставить zip создавать архивы, совместимые с PKZIP 2 (пока расширения Zip64 не
 нужны) . Вы должны использовать распаковку, совместимую с PKZIP 4.5, например,
 разархивировать 6.0 или более позднюю версию, для извлечения файлов с использо-
 ванием расширений Zip64.
 Кроме того, потоковые архивы, записи, зашифрованные стандартным шифрованием,
 или разделенные архивы, созданные с помощью параметра паузы, могут быть несовме-
 стимы с PKZIP, поскольку используются дескрипторы данных, а PKZIP на момент на-
 писания этой статьи не поддерживает дескрипторы данных (но недавние изменения в
 Опубликованный PKWare стандарт zip теперь включает некоторую поддержку формата
 дескриптора данных, используемого zip).
 Mac OS X. Хотя в предыдущих версиях Mac был собственный порт zip, zip поддержи-
 вает MacOSX как часть порта Unix, и к нему применимо большинство функций Unix.
 Ссылки на MacOS ниже обычно относятся к версиям MacOS старше, чем OS X. Поддерж-
 ка некоторых функций MacOS в порте Unix MacOS X, таких как ветки ресурсов, ожи-
 дается в следующем выпуске zip. Чтобы получить краткую справку по zip и unzip,
 запустите каждый из них без указания каких-либо параметров в командной строке.
";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  3)D;echo -en "\e[47;30m"; (E3);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Copyright (C) 1997-2008 Info-ZIP.
 В настоящее время распространяется под лицензией Info-ZIP.
 Copyright (C) 1990-1997 Марк Адлер, Ричард Б. Уэльс, Жан-Лу Гайи, Онно ван дер
 Линден, Кай Уве Роммель, Игорь Мандриченко, Джон Буш и Пол Киниц.
 Исходное авторское право:
 Разрешение предоставляется любому лицу или учреждению на использование, копиро-
 вание или повторное распространение этого программного обеспечения при условии,
 что включены все исходные файлы, что оно не продается с целью получения прибыли,
 и что данное уведомление об авторских правах сохраняется.
 КАК ВСЁ ДРУГОЕ БЕСПЛАТНОЕ, ZIP И СВЯЗАННЫЕ С НИМ УТИЛИТЫ ПРЕДОСТАВЛЯЮТСЯ КАК
 ЕСТЬ, БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ. ОБЛАДАТЕЛИ АВТОРСКИМ
 ПРАВОМ НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЙ УЩЕРБ В
 РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ДАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
 Пожалуйста, присылайте отчеты об ошибках и комментарии, используя веб-страницу
 по адресу:\e[36m www.info-zip.org\e[0m
 Для отчетов об ошибках, пожалуйста, укажите версию zip (см. zip -h),
 опции make, использованные для его компиляции (см. zip -v),
 используемую машину и операционную систему, а также как можно больше
 дополнительной информации.
";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  4)D;echo -en "\e[47;30m"; (E4);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "\e[32m
 compress
 shar
 tar
 unzip
 gzip
\e[0m";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  5)D;echo -en "\e[47;30m"; (E5);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Следующие переменные среды читаются и используются zip, как описано:
\e[32m ZIPOPT      \e[0mсодержит параметры по умолчанию, которые будут использоваться при за-
 пуске zip. Содержимое этой переменной среды будет добавлено в командную строку
 сразу после команды zip.
\e[32m ZIP         \e[0m[Не в ОС RISC и VMS] см. ZIPOPT
\e[32m Zip\$Options \e[0m[ОС RISC] см. ZIPOPT
\e[32m Zip\$Exts    \e[0m[RISC OS] содержит расширения, разделенные :, что приведет к тому,
 что собственные имена файлов с одним из указанных расширений будут добавлены в
 zip-файл с заменой базового имени и расширения.
\e[32m ZIP_OPTS    \e[0m[VMS] см. ZIPOPT
";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  6)D;echo -en "\e[47;30m"; (E6);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;
echo -e "
\e[1;36m DIAGNOSTICS\e[0m

 Статус выхода (или уровень ошибки) приблизительно соответствует кодам выхода,
 определенным PKWARE, и принимает следующие значения, за исключением VMS:
\e[32m  0\e[0m нормальный;никаких ошибок и предупреждений не обнаружено.
\e[32m  2\e[0m неожиданное завершение zip-файла.
\e[32m  3\e[0m обнаружена общая ошибка в формате zip-файла. В любом случае обра-
 ботка может быть успешно завершена; некоторые поврежденные zip-файлы, созданные
 другими архиваторами, имеют простые обходные пути.
\e[32m  4\e[0m zip не удалось выделить память для одного или нескольких буферов во время
 инициализации программы.
\e[32m  5\e[0m обнаружена серьезная ошибка в формате zip-файла.
 Обработка, вероятно, не удалась сразу.
\e[32m  6\e[0m запись слишком велика для обработки (например, входные файлы размером более
 2ГБ, когда не используется Zip64 или при попытке прочитать существующий слишком
 большой архив) или запись слишком велика для разделения с помощью zipsplit.
\e[32m  7\e[0m неверный формат комментария.
\e[32m  8\e[0m zip -T не удалось или не хватило памяти.
\e[32m  9\e[0m пользователь преждевременно прервал zip с помощью control-C
 (или аналогичного).
\e[32m 10\e[0m zip обнаружил ошибку при использовании временного файла.
\e[32m 11\e[0m читать или искать ошибку.
\e[32m 12\e[0m zip не имеет ничего общего.
\e[32m 13\e[0m отсутствующий или пустой zip-файл.
\e[32m 14\e[0m ошибка при записи в файл.
\e[32m 15\e[0m zip не удалось создать файл для записи.
\e[32m 16\e[0m неверные параметры командной строки.
\e[32m 18\e[0m zip не удалось открыть указанный файл для чтения.
\e[32m 19\e[0m zip был скомпилирован с параметрами, не поддерживаемыми в этой системе.

 VMS интерпретирует стандартные возвращаемые значения Unix (или ПК) как другие,
 более пугающие вещи, поэтому zip вместо этого отображает их в коды состояния в
 стиле VMS. Как правило, zip устанавливает VMS Facility u003d 1955 (0x07A3),
 Code u003d 2* Unix_status и соответствующий Severity (как указано в ziperr.h).
 Более подробная информация содержится в документации по VMS.
 См. [.vms]NOTES.TXT и [.vms]vms_msg_gen.c.
";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  7)D;echo -en "\e[47;30m"; (E7);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 zip 3.0 несовместим с PKUNZIP 1.10. Используйте zip 1.1 для создания zip-файлов,
 которые можно распаковать с помощью PKUNZIP 1.10.
 zip-файлы, созданные zip 3.0, не должны обновляться zip 1.1 или PKZIP 1.10,
 если они содержат зашифрованные элементы или если они были созданы в канале или
 на устройстве без поиска. Старые версии zip или PKZIP создавали архив неправиль-
 ного формата. Старые версии могут отображать содержимое zip-файла, но все равно
 не могут его распаковать (из-за нового алгоритма сжатия). Если вы не используете
 шифрование и используете обычные файлы на диске, вам не нужно беспокоиться об
 этой проблеме.
 В VMS не все нечетные форматы файлов обрабатываются должным образом. Ожидается,
 что только zip-файлы в формате stream-LF будут работать с zip. Другие можно пре-
 образовать с помощью программы BILF Рахула Дхеси. Эта версия zip выполняет неко-
 торые внутренние преобразования. При использовании Kermit для передачи zip-файлов
 из VMS в MSDOS введите «установить блок типа файла» в VMS. При переносе из MSDOS
 в VMS введите «установить фиксированный тип файла» в VMS. В обоих случаях введите
 «установить двоичный тип файла» в MS-DOS. В некоторых старых версиях VMS zip мо-
 жет зависать для спецификаций файлов, использующих синтаксис DECnet foo::*.*.
 В OS/2 zip не может соответствовать некоторым именам, например, содержащим вос-
 клицательный знак или знак решетки. Это ошибка самой OS/2: 32-битные
 DosFindFirst/Next не находят таких имен. Другие программы, такие как GNU tar,
 также подвержены этой ошибке. В OS/2 количество расширенных атрибутов, отобража-
 емых DIR, равно (для совместимости) количеству, возвращаемому 16-разрядной вер-
 сией DosQueryPathInfo(). В противном случае OS/2 1.3 и 2.0 сообщали бы о разных
 размерах EA при удалении файла. Однако структура структуры, возвращаемая 32-раз-
 рядной функцией DosQueryPathInfo(), немного отличается: в ней используются до-
 полнительные байты заполнения и указатели ссылок (это связанный список), чтобы
 все поля располагались на 4-байтовых границах для переносимости в будущую RISC
 OS/2. версии. Поэтому значение, сообщаемое zip (который использует этот размер в
 32-битном режиме), отличается от значения, сообщаемого DIR. zip хранит 32-битный
 формат для переносимости, даже 16-битную версию, скомпилированную MS-C, работаю-
 щую в OS/2 1.3, поэтому даже здесь показан размер в 32-битном режиме.
";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  8)D;echo -en "\e[47;30m"; (E8);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Спасибо R. P. Byrne за его программу Shrink.Pas, которая вдохновила этот проект
 и из которой был украден алгоритм сжатия; Филу Кацу за размещение в общественном
 достоянии формата файла zip, формата сжатия и расширения имени файла .ZIP, а
 также за принятие незначительных изменений в формате файла; Стиву Бургу за разъ-
 яснениями по поводу формата deflate; Харухико Окумуре и Леониду Броухису за по-
 лезные идеи для алгоритма сжатия; Киту Петерсену, Ричу Уэльсу, Хантеру Гоатли и
 Марку Адлеру за предоставление списка рассылки и ftp-сайта для использования
 группой Info-ZIP; и, самое главное, самой группе Info-ZIP (перечисленной в файле
 infozip.who), без неустанных усилий которых тестирование и исправление ошибок не
 было бы возможным создание переносимого архива. Наконец, мы должны поблагодарить
 (обвинить) первого модератора Info-ZIP, Дэвида Киршбаума, за то, что он вообще
 втянул нас в эту неразбериху. Страница руководства была переписана для Unix RPC
 Rodgers и обновлена E. Gordon для zip 3.0.
";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  9)D;echo -en "\e[47;30m"; (E9);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;
echo -e "
\e[1;36m Pattern matching\e[0m\e[36m Сопоставление с образцом\e[0m

 Этот раздел относится только к Unix. Смотрите это место для получения подробной
 информации о работе MSDOS и VMS. Однако специальные подстановочные знаки * и []
 ниже применимы как минимум к MSDOS.
 Оболочки Unix (sh, csh, bash и другие) обычно выполняют подстановку имени файла
 (также называемую «подстановкой») в аргументах команды. Как правило, специальные
 символы:
 ? соответствует любому одиночному символу
 * соответствует любому количеству символов (включая ни одного)
 [] соответствует любому символу в диапазоне, указанном в скобках (пример: [a-f],
 [0-9]). Эта форма сопоставления с подстановочными знаками позволяет пользователю
 указать список символов между квадратными скобками и, если какой-либо из символов
 соответствует выражению, соответствует. Например:
 zip-архив \"*.[hc]\"
 заархивирует все файлы в текущем каталоге, которые заканчиваются на .h или .c.
 Поддерживаются диапазоны символов:
 zip-архив \"[a-f]*\"
 добавит в архив все файлы, начинающиеся с \"a\" по \"f\".
 Также поддерживается отрицание, когда соответствует любой символ в этой позиции,
 не входящий в список. Отрицание поддерживается добавлением ! или ^ в начало
 списка:
 zip-архив \"*.[!o]\"
 соответствует файлам, которые не заканчиваются на «.o».
 В WIN32 необходимо включить сопоставление [] с параметром -RE, чтобы избежать
 путаницы, вызванной именами с [or].
 Когда эти символы встречаются (без использования обратной косой черты или кавы-
 чек), оболочка будет искать файлы относительно текущего пути, которые соответст-
 вуют шаблону, и заменит аргумент списком совпадающих имен.
 Программа zip может выполнять такое же сопоставление с именами, которые находят-
 ся в изменяемом zip-архиве, или, в случае опций -x (исключить) или -i (включить),
 со списком файлов, над которыми нужно работать, используя обратная косая черта
 или кавычки, чтобы указать оболочке не выполнять расширение имени. В общем, ког-
 да zip встречает имя в списке файлов, он сначала ищет имя в файловой системе.
 Если он находит его, он добавляет его в список файлов для выполнения. Если он не
 находит его, он ищет имя в изменяемом zip-архиве (если оно существует), исполь-
 зуя описанные выше символы сопоставления с образцом, если они есть. Для каждого
 совпадения это имя будет добавлено в список обрабатываемых файлов, если только
 это имя не совпадает с именем, заданным с параметром -x, или не совпадает с
 каким-либо именем, указанным с параметром -i.
 Сопоставление с шаблоном включает в себя путь, поэтому такие шаблоны, как \*.o,
 соответствуют именам, оканчивающимся на \".o\", независимо от префикса пути.
 Обратите внимание, что перед каждым специальным символом (например, ?*[]) должна
 стоять обратная косая черта, или весь аргумент должен быть заключен в двойные
 кавычки (\"\").
 Как правило, используйте обратную косую черту или двойные кавычки для путей с
 подстановочными знаками, чтобы заставить zip выполнять сопоставление с образцом
 для путей к файлам, и всегда для путей и строк, которые содержат пробелы или
 подстановочные знаки для -i, -x, -R, -d и - U и везде, где zip должен
 обрабатывать подстановочные знаки.
";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
 10)D;echo -en "\e[47;30m";(E10);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;
echo -e "
\e[1;36m Use\e[0m\e[36m Применение\e[0m

 Программа полезна для упаковки набора файлов для распространения; для архивации
 файлов; и для экономии места на диске путем временного сжатия неиспользуемых
 файлов или каталогов.
 Программа zip помещает один или несколько сжатых файлов в один zip-архив вместе
 с информацией о файлах (имя, путь, дата, время последней модификации, защита и
 контрольная информация для проверки целостности файла). Вся структура каталогов
 может быть упакована в zip-архив с помощью одной команды. Коэффициенты сжатия от
 2:1 до 3:1 являются общими для текстовых файлов. zip имеет один метод сжатия
 (дефляция), а также может хранить файлы без сжатия. (Если добавлена поддержка
 bzip2, zip также может сжимать с использованием сжатия bzip2, но такие записи
 требуют достаточно современной распаковки для распаковки. Когда выбрано сжатие
 bzip2, оно заменяет дефляцию в качестве метода по умолчанию.) zip автоматически
 выбирает лучший из двух ( deflation или store или, если выбран bzip2, bzip2 или
 store) для каждого сжимаемого файла.
 Формат команды. Основной формат команды
 zip параметры архива inpath inpath ...
 где archive — это новый или существующий zip-архив, а inpath — это путь к ката-
 логу или файлу, который может включать подстановочные знаки. Получив имя сущест-
 вующего zip-архива, zip заменит записи с идентичными именами в zip-архиве (соот-
 ветствующие относительным именам, хранящимся в архиве) или добавит записи для
 новых имен. Например, если foo.zip существует и содержит файлы foo/file1 и
 foo/file2, а каталог foo содержит файлы foo/file1 и foo/file3, то:
\e[32m zip -r foo.zip foo\e[0m
 или более кратко:
\e[32m zip -r foo foo\e[0m
 заменит foo/file1 в foo.zip и добавит foo/file3 в foo.zip. После этого foo.zip
 содержит файлы foo/file1, foo/file2 и foo/file3, при этом foo/file2 не изменился.
 Итак, если перед выполнением команды zip foo.zip имеет:
\e[32m foo/file1 foo/file2\e[0m
 и каталог foo имеет:
\e[32m file1 file3\e[0m
 тогда foo.zip будет иметь:
\e[32m foo/file1 foo/file2 foo/file3\e[0m
 где foo/file1 заменяется, а foo/file3 является новым.
 -@ списки файлов.
 Если список файлов указан как -@ [Не в MacOS], zip берет список входных файлов
 из стандартного ввода, а не из командной строки. Например,
\e[32m zip -@ foo\e[0m
 будет хранить файлы, перечисленные по одному в строке на стандартном вводе в
 foo.zip. В Unix эта опция может быть использована с большим успехом в сочетании
 с командой find (1). Например, чтобы заархивировать все исходные файлы C
 в текущем каталоге и его подкаталогах:
\e[32m find . -name \"*.[ch]\" -print | zip source -@\e[0m
 (обратите внимание, что шаблон должен быть заключен в кавычки, чтобы оболочка не
 расширяла его). Потоковые вход и выход. zip также примет одно тире (\"-\")
 в качестве имени zip-файла, и в этом случае он запишет zip-файл в стандартный
 вывод, что позволит передать вывод в другую программу. Например:
\e[32m zip -r - . | dd of=/dev/nrst0 obs=16k\e[0m
 будет записывать выходные данные zip непосредственно на ленту с указанным размером
 блока для резервного копирования текущего каталога. zip также принимает одно тире
 (\"-\") в качестве имени сжимаемого файла, и в этом случае он будет считывать файл
 из стандартного ввода, позволяя zip принимать ввод из другой программы. Например:
\e[32m tar cf - . | zip backup -\e[0m
 будет сжимать вывод команды tar для резервного копирования текущего каталога.
 Как правило, это обеспечивает лучшее сжатие, чем в предыдущем примере с использо-
ванием параметра -r, потому что zip может использовать избыточность между файлами.
 Резервную копию можно восстановить с помощью команды
\e[32m unzip -p backup | tar xf -\e[0m
 Если имя zip-файла не задано и stdout не является терминалом, zip действует как
 фильтр, сжимая стандартный ввод в стандартный вывод. Например,
\e[32m tar cf - . | zip | dd of=/dev/nrst0 obs=16k\e[0m
 эквивалентно
\e[32m tar cf - . | zip - - | dd of=/dev/nrst0 obs=16k\e[0m
 zip-архивы, созданные таким образом, могут быть извлечены с помощью программы
 funzip, входящей в пакет unzip, или gunzip, входящего в пакет gzip (но некоторые
 gunzip могут не поддерживать это, если zip использует расширения Zip64).
 Например:
\e[32m dd if=/dev/nrst0  ibs=16k | funzip | tar xvf -\e[0m
 Поток также можно сохранить в файл и разархивировать. Если включена поддержка
 Zip64 для больших файлов и архивов и zip используется в качестве фильтра,
 zip создает Zip64-архив, для чтения которого требуется распаковка, совместимая с
 PKZIP 4.5 или более поздней версии. Это делается для того, чтобы избежать
 неоднозначности в структуре zip-файла, как определено в текущем стандарте zip
 (PKWARE AppNote), где решение об использовании Zip64 должно быть принято до того,
 как данные будут записаны для записи, но для потока размер данных не известно на
 тот момент. Если известно, что объем данных меньше 4 ГБ, можно использовать пара-
 метр -fz- для предотвращения использования Zip64, но zip завершится с ошибкой,
 если Zip64 действительно необходим. zip 3 и unzip 6 и более поздние версии могут
 читать архивы с записями Zip64. Кроме того, zip удаляет расширения Zip64,
 если они не нужны, при копировании записей архива (см. параметр -U (--copy)).
 При направлении вывода в другой файл обратите внимание, что все параметры
 должны быть указаны до перенаправления, включая -x. Например:
\e[32m zip archive \"*.h\" \"*.c\" -x donotinclude.h orthis.h > tofile\e[0m

 ZIP-файлы. При изменении существующего zip-архива zip запишет временный файл с
 новым содержимым и заменит старый только тогда, когда процесс создания новой
 версии завершится без ошибок.
 Если имя zip-архива не содержит расширения, добавляется расширение .zip.
 Если имя уже содержит расширение, отличное от .zip, существующее расширение
 остается неизменным. Однако разделенные архивы (архивы, разделенные на несколь-
 ко файлов) требуют расширения .zip для последнего разделения.
 Сканирование и чтение файлов. Когда zip запускается, он сканирует файлы для
 обработки (при необходимости). Если это сканирование занимает более 5 секунд,
 zip отобразит сообщение «Сканирование файлов» и начнет отображать точки прогрес-
 са каждые 2 секунды или каждые несколько обработанных записей, в зависимости от
 того, что занимает больше времени. Если между точками есть более 2 секунд, это
 может указывать на то, что поиск каждого файла занимает время и может означать,
 например, медленное сетевое соединение. (На самом деле начальное сканирование
 файла представляет собой двухэтапный процесс, в котором за сканированием катало-
 га следует сортировка, и эти два этапа разделены пробелом в точках. При обновле-
 нии существующего архива пробел также появляется между сканированием существую-
 щего файла и сканирование нового файла.) Точки сканирования файлов не контроли-
 руются опцией -ds размер точки, но точки отключаются опцией -q тихая.
 Параметр -sf show files можно использовать для сканирования файлов и получения
 списка отсканированных файлов без фактической их обработки.
 Если zip не может прочитать файл, он выдает предупреждение, но продолжает.
 См. параметр -MM ниже, чтобы узнать больше о том, как zip обрабатывает шаблоны,
 которые не совпадают, и файлы, которые не читаются. Если некоторые файлы были
 пропущены, в конце операции zip выдается предупреждение, в котором указывается,
 сколько файлов было прочитано и сколько пропущено.
 Командные режимы. zip теперь поддерживает два различных типа командных режимов:
 внешний и внутренний. Внешние режимы (добавление, обновление и обновление)
 считывают файлы из файловой системы (а также из существующего архива), в то
 время как внутренние режимы (удаление и копирование) работают исключительно с
 записями в существующем архиве.
\e[32m add\e[0m Обновите существующие записи и добавьте новые файлы.
 Если архив не существует, создайте его. Это режим 'по умолчанию'.
\e[32m update (-u)\e[0m Обновите существующие записи,
 если они новее в файловой системе, и добавьте новые файлы.
 Если архив не существует, выдайте предупреждение, создайте новый архив.
\e[32m freshen (-f)\e[0m Обновите существующие записи архива,
 если они новее в файловой системе. Не добавляет новые файлы в архив.
\e[32m delete (-d)\e[0m Выберите записи в существующем архиве и удалите их.
\e[32m copy (-U)\e[0m Выберите записи в существующем архиве и скопируйте их в новый архив.
 Этот новый режим аналогичен обновлению, но шаблоны командной строки выбирают
 записи в существующем архиве, а не файлы из файловой системы, и он использует
 параметр --out для записи полученного архива в новый файл, а не для обновления
 существующего архива, оставляя исходный архив без изменений.

 Новый параметр синхронизации файлов (-FS) также считается новым режимом, хотя он
 аналогичен обновлению. Этот режим синхронизирует архив с файлами в ОС, только
 заменяя файлы в архиве, если время файла или размер файла ОС отличаются, добавляя
 новые файлы и удаляя записи из архива, где нет соответствующего файла.
 Поскольку в этом режиме записи из архива могут быть удалены,
 рассмотрите возможность создания резервной копии архива.
 Также см. -DF для создания архивов различий.
 См. описание каждой опции ниже для получения подробной информации
 и раздел ПРИМЕРЫ ниже для примеров.
 Разделить архивы. zip версии 3.0 и выше может создавать разделенные архивы.
 Разделенный архив — это стандартный zip-архив, разделенный на несколько файлов.
 (Обратите внимание, что разделенные архивы — это не просто архивы, разделенные на
 части, так как смещения записей теперь основаны на начале каждого разделения.
 Объединение частей вместе сделает эти смещения недействительными, но unzip обычно
 может справиться с этим. zip обычно отказывается для обработки такого
 объединенного архива, если для исправления смещений не используется опция
 исправления -FF.)

 Одно из применений разделенных архивов — хранение большого архива на нескольких
 съемных носителях. Для разделенного архива с 20 разделенными файлами файлы обычно
 называются (замените ARCHIVE на имя вашего архива) ARCHIVE.z01, ARCHIVE.z02, ...,
 ARCHIVE.z19, ARCHIVE.zip. Обратите внимание, что последний файл — это файл .zip
 Напротив, составные архивы представляют собой исходный многодисковый архив,
 обычно требующий гибких дисков и использующий метки томов для хранения номеров
 дисков. zip поддерживает разделенные архивы, но не составные архивы, хотя
 существует процедура преобразования разделенных архивов нужного размера в
 составные архивы. Обратное также верно, когда каждый файл составного архива может
 быть скопирован, чтобы файлы с указанными выше именами создавали разделенный архив

 Используйте -s, чтобы установить размер разделения и создать разделенный архив.
 Размер указывается в виде числа, за которым может следовать:
 k (кБ), m (МБ), g (ГБ) или t (ТБ) (по умолчанию — m).
 Опцию -sp можно использовать для приостановки архивации zip между разбиениями,
 чтобы, например, можно было заменить съемный носитель,
 но прочтите описания и предупреждения для -s и -sp ниже.

 Хотя zip не обновляет разделенные архивы, zip предоставляет новую опцию
 -O (--output-file или --out),
 позволяющую обновлять разделенные архивы и сохранять их в новом архиве. Например:
\e[32m zip inarchive.zip foo.c bar.c --out outarchive.zip\e[0m
 читает архив inarchive.zip, даже если он разделен, добавляет файлы foo.c и bar.c
 и записывает полученный архив в outarchive.zip. Если inarchive.zip разделен,
 то outarchive.zip по умолчанию имеет тот же размер разделения.
 Имейте в виду, что если outarchive.zip и любые разделенные файлы, созданные с его
 помощью, уже существуют, они всегда перезаписываются по мере необходимости без
 предупреждения. Это может быть изменено в будущем.

 Юникод. Хотя стандарт zip требует хранения путей в архиве с использованием
 определенного набора символов, на практике zip хранит пути в архивах в любом
 локальном наборе символов. Это создает проблемы, когда архив создается или
 обновляется в системе с использованием одного набора символов, а затем извлекается
 в другой системе с использованием другого набора символов.
 При компиляции с включенной поддержкой Unicode на платформах, поддерживающих
 широкие символы, zip теперь сохраняет в дополнение к стандартному локальному пути
 для обратной совместимости перевод пути UTF-8. Это обеспечивает общий
 универсальный набор символов для хранения путей, который позволяет полностью
 извлекать эти пути в других системах, поддерживающих Unicode, и максимально точно
 сопоставлять их в системах, которые этого не делают.
 В системах Win32, где пути внутренне хранятся в формате Unicode, но представлены
 в локальном наборе символов, возможно, что некоторые пути будут пропущены во время
 сканирования каталога локального набора символов. zip с поддержкой Unicode теперь
 может читать и сохранять эти пути. Обратите внимание, что системы Win 9x и
 файловые системы FAT не полностью поддерживают Unicode.
 Имейте в виду, что окна консоли в Win32 и Unix, например, иногда не точно
 отображают все символы из-за того, как каждая операционная система переключает
 наборы символов для отображения. Однако инструменты навигации по каталогам должны
 показывать правильные пути, если загружены необходимые шрифты.

 Формат командной строки. В этой версии zip обновлена обработка командной строки
 и добавлена поддержка длинных параметров. Короткие варианты принимают форму:
\e[32m -s[-][s[-]...][value][=value][ value]\e[0m

 где s — короткий вариант из одного или двух символов. Короткая опция, которая
 принимает значение, является последней в аргументе, а все, что следует за ней,
 принимается за значение. Если вариант можно отрицать и \"-\"сразу следует за опцией,
 опция отрицается. Короткие опции также могут быть заданы как отдельные аргументы.
\e[32m -s[-][value][=value][ value] -s[-][value][=value][ value] ...\e[0m
 Короткие параметры обычно принимают значения либо как часть того же аргумента,
 либо как следующий аргумент. Необязательный u003d также поддерживается. Так
\e[32m -ttmmddyyyy\e[0m
 and
\e[32m -tt=mmddyyyy\e[0m
 and
\e[32m -tt mmddyyyy\e[0m
 все работает. Опции -x и -i принимают списки значений и используют немного другой
 формат, описанный ниже. См. параметры -x и -i. Длинные опционы принимают форму
\e[32m --longoption[-][=value][ value]\e[0m
 где опция начинается с --, имеет многосимвольное имя, может включать тире в конце,
 чтобы отменить опцию (если опция поддерживает это), и может иметь значение
 (аргумент опции), указанное перед ним знаком u003d (без пробелов).
 Значения также могут следовать за аргументом. Так:
\e[32m --before-date=mmddyyyy\e[0m
 and
\e[32m --before-date mmddyyyy\e[0m
 оба работают.
 Длинные названия опций могут быть сокращены до кратчайших уникальных аббревиатур.
 См. описания опций ниже, для которых поддерживаются длинные опции.
 Чтобы избежать путаницы, не сокращайте отрицательную опцию встроенным тире (\"-\")
 перед тире, если вы планируете ее отрицать (анализатор рассмотрит завершающий тире
 например, для опции --some-option с использованием --some - как вариант,
 как часть имени, а не отрицательный тире).
 Это можно изменить, чтобы последний тире в --some- в будущем стал отрицательным.
";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
 11)D;echo -en "\e[47;30m";(E11);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fZipOptionsA;echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
 12)D;echo -en "\e[47;30m";(E12);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fZipOptionsB;echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
 13)D;echo -en "\e[47;30m";(E13);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;fZipOptionsC;echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
 14)D;echo -en "\e[47;30m";(E14);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
То же, что и выше, включая скрытые файлы (файлы, начинающиеся с точки):
\e[32m zip archivename .* *\e[0m

Создайте Zip-архив с именем, archivename.zip содержащим все файлы MP3 в текущем
каталоге, без сжатия файлов.
\e[32m zip -0 archivename *.mp3\e[0m

 Создать zip-архив из файла:
\e[32m zip file1.zip file1\e[0m

 Создать zip-архив из папки:
\e[32m zip -r mydir.zip ddir\e[0m

 Создать zip-архив из нескольких файлов:
\e[32m zip -r file1.zip file1 file2 dir1\e[0m

 Чтобы сжать один или несколько файлов, укажите файлы, которые вы хотите
 добавить в архив, разделенные пробелами, как показано ниже:
\e[32m zip archivename.zip filename1 filename2 filename3\e[0m

 Чтобы создать Zip-архив каталога, вы должны использовать:
\e[32m zip -r archivename.zip directory_name\e[0m

 Вы также можете добавить несколько файлов и каталогов в один архив:
\e[32m zip -r archivename.zip directory_name1 directory_name2 file1 file1\e[0m

 Самый простой пример:
\e[32m zip stuff *\e[0m

 Пример с путёп к директории:
\e[32m zip -r /path/to/files/*\e[0m
";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
 15)D;echo -en "\e[47;30m";(E15);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 Pаспаковать zip-архив:
\e[32m unzip archive.zip\e[0m

 Pаспаковать zip-архив в другой каталог:
\e[32m unzip zipname -d directoryname\e[0m

 Pаспаковать все zip-архивы:
\e[32m for f in *.zip ; do unzip \$f ; done\e[0m
";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
 16)D;echo -en "\e[47;30m";(E16);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
 mZip Описание утилиты zip. Package and compress (archive) files.
 Do 23 Mär 2023 20:08:32 CET
 Asciinema:  \e[36m https://asciinema.org/a/569619\e[0m
 Github:     \e[36m https://github.com/Grannik/mZip\e[0m
 Gitlab:     \e[36m https://gitlab.com/grannik/mzip\e[0m
 Sourceforge:\e[36m https://sourceforge.net/projects/mzip/files/\e[0m
 Notabug:    \e[36m https://notabug.org/Grannikoleg/mZip\e[0m

 Codeberg:   \e[36m https://codeberg.org/Grannik/mZip\e[0m
 Bitbucket:  \e[36m https://bitbucket.org/grannikoleg/mzip/src/main/\e[0m
 Framagit:   \e[36m https://framagit.org/GrannikOleg/mzip\e[0m
 Gitea:      \e[36m https://try.gitea.io/Grannik/mZip.sh\e[0m
 Gogs:       \e[36m https://try.gogs.io/Grannik2/mZip\e[0m
 Phacility:  \e[36m https://admin.phacility.com/F466791#2592\e[0m
";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
 17)D;echo -en "\e[47;30m";(E17);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;exit 0;fi;;
esac;C;done
}
fZip
